准备数据
准备在链表操作中需要用到的变量及数据结构
示例代码如下:
我们可以认为,该链表是一个班级学生的记录,其中key表示学号,name为学生的名字,age为年龄。
追加结点
追加结点就是在链表末尾增加一个结点。表尾结点的地址部分原来保存的是空地址NULL,此时需要将其设置为新增结点的地址(即原表尾结点指向新增结点),然后将新增节点的地址部分设置为空地址NULL,即新增结点为表尾。
由于一般情况下,链表只有一个头指针head,要在末尾添加结点就需要从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。
追加结点的操作步骤如下:
(1)首先分配内存地址,保存新增结点。
(2)从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。
(3)将表尾结点的地址设置为新增结点的地址。
(4)将新增结点的地址部分设置为空地址NULL,即新增结点成为表尾。
示例代码如下:
然后,将传入的nodeData保存到申请的内存区域,并设置该结点指向下一结点的指针值为NULL。
插入头结点
插入头结点就是在链表首部添加结点的过程,和在表尾插入结点相反,这个操作是在表头上插入结点,作为头结点。
插入头结点的步骤如下:
(1)首先分配内存,保存新增的结点。
(2)使新增姐弟那指向头指针head所指向的结点
(3)然后使头指针head指向新增结点
示例代码如下:
然后,将传入的nodeData保存到申请的内存区域中,并使新增的结点指向头指针head所指向的结点,然后设置头指针head重新指向新增结点。
查找结点
查找结点就是在链表结构中查找需要的元素。对于链表结构来说,一般可以分为按照结点序号查找和按照关键字查询两类。
按照结点序号查询
即查询链表中的第多少个结点,其示例代码如下:
按照关键字查询
即根据链表中结点的某一个关键字进行查询,我们以查询学生的姓名(name)为例,其示例代码如下:
插入结点
插入结点就是在链表中间部分的位置增加一个结点。
插入结点的步骤如下:
(1)分配内存空间,保存新增的结点。
(2)找到要插入的逻辑位置,也就是找到插在那个结点的后面。
(3)修改插入位置结点的指针,使其指向新增结点,而使新增结点指向原插入位置所指向的结点。
示例代码如下:
delete