欢迎光临散文网 会员登陆 & 注册

C++ 链表笔记

2021-12-02 17:20 作者:云汉含星  | 我要投稿

链表是对指针的一个应用;所以载体就是指针,或者能存指针的东西

首先声明一个可以一团数据的东西,可以是struct,也可以是class;(PS:如果极端一点,直接把数据指针存在数组里也可以)

以struct为例,里面可以分为两个部分:地址指针数据指针

链表通俗一点理解:就和解密游戏一样,我根据门牌号(指针地址)找到个房子,然后再这个房子有很多杂七杂八的东西(数据),也有下一个目的地的门牌号(下一个节点地址)。于是我就可以去寻找下一个房子,而下一个房子里同样有着数据和下下个地址。如此就能从头一路摸索到尾。

所以写起来也很简单。

先声明结构体,里面他又下一个指针和上一个指针,还有数据(也可以是数据指针)

我写在for循环里面去给这个链表赋值,需要提前建好head节点,其他节点就新建节点。

这么写下来就是双向列,可以从next向后寻找,也可以last向前寻找。(head和end处理一下,就可以变为双向循环链表)

上面的代码运行结果为:

如果使用函数构造的话,新建节点和赋值会方便很多。

这里遇到一个小问题,写了构造函数之后,不使用new出来的对象无法访问对象,所以单独写了个默认的构造函数来生成链表头。而且头节点就变成了个摆设,再次新建节点的时候直接new的节点直接添加在了链表末尾。头节点如果想要存东西,必须单独来赋值,很难在循环中赋值。

新建节点的时候就可以直接带参new一个节点:

直接这么使用得到的结果是一个逆序的链表,可以使当前节点指向上一个节点,但是上一个节点指向当前节点还是需要写在外面。

把里面的值换成一个指针,就可以存下无限多的数据

使用的时候先new一个链表节点,然后再new一个data结构体(如果不new一个data结构体,那么nowNode->data就不存在,会报错)

如此就能直接用cin输入流给结构体数据赋值


C++ 链表笔记的评论 (共 条)

分享到微博请遵守国家法律