【比较】
顺序结构:在内存开辟连续的空间(预分配,一般会浪费)来存储,相邻的物理存储地址就是数据之间的逻辑关系
链式结构:在一个存储单元,除了存储数据本身,还要存储下一个数据的物理地址,所以链式的存储在内存上可以是断断续续的
创建头结点知识点:
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前面的元素,非常麻烦)