您的位置:首页 > 理论基础 > 数据结构算法

【ShancoLove】带你看数据结构——第三课:线性表链式结构(单链表)

2015-10-08 21:13 357 查看
【比较】

顺序结构:在内存开辟连续的空间(预分配,一般会浪费)来存储,相邻的物理存储地址就是数据之间的逻辑关系

链式结构:在一个存储单元,除了存储数据本身,还要存储下一个数据的物理地址,所以链式的存储在内存上可以是断断续续的

创建头结点知识点:

L=(Link)malloc(sizeof(JD)); || L=(LinkList *)malloc(sizeof(JD));

解释:malloc是开辟一个链式存储单元,分配连续可用的字节空间,一般作为头结点,这样L->next=NULL就算是一个空链表创建完成

Link为指针类型,

JD是一个结构体对象名称,需要计算大小,来创建头结点,既创建L

malloc属于<stdlib.h>,所以头文件需要包含

在完成链式表的操作时,一般需要考虑指针是否指向NULL

通过p=p->next来遍历数据

free(q);可以用来释放空链表中的某个结点,但一定要控制好头结点,尾结点,不能把它们free掉,否则无法进行其他操作

需要通过灵活使用指针,指针内容并非此次重点,如有疑问,可以留言

优点:平均插删移动节点复杂度为o(1)——>就是说移动节点比顺序表少很多,另外它动态分配空间,不需要预分配

缺点:开辟额外的空间存储地址(逻辑关系),并且存取不方便(有的时候会出现p->next重复好几次,有的时候查p前面的元素,非常麻烦)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: