链表是最常见的线性结构,往往用于较大数据的存储、查询等。
优点:增删操作非常快捷(弥补了数组插入、删除效率低;普通数组无法动态扩展;分配过大会导致资源浪费的缺点);
缺点:1、不能对元素随机存取(必须一个接一个查找或存取,无法跳过);
2、不能逆序(从下一个结点到上一个结点)遍历元素;
//原因:需要找到元素的位置
链表的组成:
数据域:存储数据
指针域:存下一个数据的地址
注意事项:
内存地址不一定连续,元素之间采用指针关联
链表要动态分配内存,新增结点需要分配内存,删除结点需要释放内存
链表查询慢(需要找到要查询数据的地址),增删快(有指针,不需要移动元素);数组查询快(有索引),增删慢(需要移动元素)
单向链表只能从前往后遍历
结点的创建:
链表的初始化:
链表的插入:
链表的删除:
链表清空:
链表的销毁:
注:清空和销毁的区别在于,清空链表后,依然可以使用链表,但销毁链表后,就不可以使用了