一、链表基础 1、什么是链表? 链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域key和指向下一个节点的指针next。通过各个节点之间的相互连接,最终串联成一个链表。 2、节点定义 打印结果: 3、头结点 二、链表的操作 1、链表的遍历 1、图形 2、代码 2、链表节点的插入 1、头 ...
分类:
其他好文 时间:
2018-09-25 20:36:31
阅读次数:
137
一、题目 1、审题 2、分析 给出一个整数链表,和一个目标数 x,将链表中节点值 < x 的节点放在值为 x 节点的左边,且保持链表原来的节点顺序。 二、解答 1、思路: 方法一、 新建两个伪头结点,head1、head2,遍历链表节点: ①、若 val < x,则在 head1 后添加该节点 ②、 ...
分类:
其他好文 时间:
2018-09-25 12:41:11
阅读次数:
100
循环链表 循环链表是一个收尾相接的链表,将单链表的最后一个指针域改由NULL改为指向表头结点这就是单链式的循环链表,并称为循环单链表 带头结点的循环单链表的各种操作的算法实现与带头结点单链表的算法实现类似,差别仅在于算法判别当前结点p是否为尾结点的条件不同。单链表中的判别条件为p!=NULL或p-> ...
分类:
其他好文 时间:
2018-09-24 14:43:28
阅读次数:
270
链表定义:链表是由一系列节点组成的元素结合。每个节点包含两个部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。 一、单链表 1、节点定义 2、建立链表 (1)头插法 头插法是在头结点这边插入。 (2)尾插法 不光要知道头还需要知道尾在哪。从尾节点插入。 ...
分类:
其他好文 时间:
2018-09-24 13:40:40
阅读次数:
239
1 #include 2 #include 3 /* 4 头插法建立链表:所谓头插法,就是新来的结点每次都插在头结点后面 5 内功心法:让新来的结点先有所指向(指向头结点的下一个结点),新来的结点,有所指向不会打断原有的指向关系。 6 */ 7 typedef struct node 8 { 9 i... ...
分类:
其他好文 时间:
2018-09-24 00:32:58
阅读次数:
255
很经典的一道题,但波波老师讲出了新的东西。设立虚拟结点,因为每次循环cur->next只有头结点无法考虑,但是你要是单独考虑头结点,万一头结点删除你还需要再考虑下一头结点,就形成了很麻烦的while结构。有了虚拟头结点,问题全都解决了。 ...
分类:
其他好文 时间:
2018-09-24 00:26:46
阅读次数:
235
删除: 算法思想 插入 算法思想 代码实现: 查找 1.按序号查找 算法思想 要查找带头结点的单链表中第i个结点,则需要从单链表的头指针L出发,从头结点L->nexrt顺着链域扫描,用指针p指向当前扫描的结点,j做计数器,累积当前扫描的结点数(初始值为0),j==ii时,指针p指向的就是要找到第i个 ...
分类:
其他好文 时间:
2018-09-23 15:10:08
阅读次数:
135
1.单链表: 在顺序表中,用一组地址连续的存储单元来一次存放线性表的结点,因此结点的逻辑顺序与物理顺序是一致的。但链表却不同,链表是用一组任意的存储单元来存放 线性表的结点,这组存储单元可以是连续的,也可以是非连续的,甚至是零散分布在内存的任何位置上。因此,链表中结点的逻辑顺序与物理顺序不一定相同。 ...
分类:
编程语言 时间:
2018-09-22 21:31:50
阅读次数:
194
单链表的特点是:单向。设头结点位head,则最后一个节点的next指向NULL。如果只知道头结点head,请问怎么将该链表排序? 设结点结构为 那么一般人见到这种题目,立马就会想到指针交换。是的,大家被指针交换的题目做多了,形成思维定势了。对于这道题,我们完全可以利用值交换来达到排序的目的。 当然, ...
分类:
编程语言 时间:
2018-09-18 00:15:42
阅读次数:
184
头结点不位于链表里面,只是用于定位,和内核链表不同。 将LinuxList.h添加到我们的工程中。 再添加一个DualCircleList.h文件: 测试程序如下: 运行结果如下: 使用以下程序访问会得到死循环: 因为当前是一个双向循环链表。 小结: 思考题: ...
分类:
其他好文 时间:
2018-09-16 18:41:41
阅读次数:
186