赞
踩
物理存储上非连续,数据元素的逻辑顺序通过链表中的指针连接次序,实现一种线性存储结构。
特点:链表是由一系列节点(链表中的每一个元素都称为节点)组成,节点在运行时动态生成。每个节点包括俩个部分分别是数据域和指针域。
每个节点一般采用结构体形式组织:
一般包括,创建链表,增删改查,遍历链表,排序,释放链表空间等。
1、在主函数里面输入要创建链表的个数,并且循环分配空间,给每个空间进行赋值,调用自定义函数。
2、自定义函数里面先判断头节点是否为空,为空直接把第一个分配空间给头节点。
3、头节点不是空的情况下定义一个指针来接收头函数地址,利用while循环找到最后一个节点,相当于第一次在头节点后面创建一个节点,然后给它分配空间,让最后一个节点指向NULL。以此类推。
4、在接收用户输入的name变量的时候打印最好写成%19s确保不会溢出。
主函数中:
遍历的思路:调用头节点的地址保存下来,然后做一个循环判断,条件是循环到最后一个节点也就是这里的b != NULL,而不是b->next != NULL,第二种会在最后一个节点跳出循环,丢失数据,
思路:
1、自定义函数来接收头节点的地址,自定义结构体指针接收地址。
2、因为要改变原来的节点,用头节点来在while循环中依次往后移动,知道最后一个是NULL。
3、第一个头节点的地址也要释放c = *h
4、最后可以直接释放c然后c =NULL。
5、要注意->优先级高于*所以要(*h)->next。
思路:查找就是自定义函数中的指针移动对应的数据对比传入的参数,如果相同返回当前地址,如果不相同并且当前的指针已经指向NULL,就返回NULL。
(1)、查找id:传入要查找的id参数,在循环条件是当前指针不能为NULL,判断id是否相等。相等返回当前指针,不相等返回NULL。
(2)、查找name:传入要查找的name参数,在循环条件是当前指针不能为NULL,判断name是否相等。相等返回当前指针,不相等返回NULL。
查找name代码如下
(1、利用结构体指针函数返回):
删除思路:
(1)、如果链表为空不需要删除
(2)、如果删除的是第一个节点,用头节点的指针保存下一个节点的地址。
(3)、如果删除中间节点,则找到中间节点的前一个节点,用前一个节点的指针与指向后一个节点的指针域。
寻找名字删除代码如下:
思路:
(1)、若果链表没有节点,则新插入的的就是第一个节点。
(2)、如果新插入的节点数值小于第一个节点,则作为头节点。
(3)、如果新插入的节点在中间位置,找到前一个插入中间。
(4)、如果节点数值大,则插入最后一个。
正向排序思路:
(1)、若果链表没有节点,则新插入的的就是第一个节点。
(2)、如果新插入的节点数值小于第一个节点,则作为头节点。
(3)、如果新插入的节点在中间位置,找到前一个插入中间。
(4)、如果节点数值大,则插入最后一个。
思路:(1)、在顺序的基础上,第二个节点的指针指向头节点的地址。
(2)、用第二个节点的地址来接收头节点地址。
(3)、 用第三个节点的指针接收第二个节点的地址。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。