数据结构0328
2018-03-30 09:51 SummerVan 阅读(200) 评论(0) 收藏 举报单链表的整表删除
算法思路:1声明一个结点p和q;
2将第一个结点赋值给p;
3循环:
将下一结点赋值给q;(q不能省略,因为结点有数据域还有指针域,在情况p的同时是对整个结点进行删除和内存释放的操作,q使得下一个结点是谁得到了记录,以便等p释放后把下一结点来回来补充)
释放p;
将q赋值给p
单链表的结构与顺序存储结构的优缺点
存储分配方式:顺序存储结构用一段连续的存储单元依次存储线性表的数据元素,单链表采取链式存储结构。用一组任意的存储单元存放线性表的元素
时间性能:查找(顺序存储结构O(1),单链表O(n)),插入和删除(顺序存储结构需要平均移动表长一半的元素,时间为O(n),单链表在知道某位置的指针后,插入和删除的时间为O(1))
空间性能:顺序存储结构需要预分配存储空间,分大了浪费,小了容易发生内存溢出,单链表不需要预分配存储空间,只要有就可以分配,元素个数不受限制
总结:如果线性表需要频繁查找,很少进行删除插入操作时,应采用顺序存储结构,如果需要频繁删除和插入操作则采用单链表结构(采取哪种结构视程序中具体情况决定),当线性表中的元素个数变化较大或者不知道有多大的时候,最好用单链表结构
静态链表
定义:用数组描述的链表叫静态链表(还有起名叫游标实现法)
思路:先让数组的元素有两个数据域组成,data和cur,数组的每一个下标对应一个data和cur,数据域data存放数据元素,cur相当于单链表中的next指针,存放该元素的后继在数组中的下标,把cur叫做游标(一般会把数组建立的大一些,以便有空余空间可以插入防止内存溢出),对数组第一个和最后一个元素作为特殊元素处理,不存数据,未被使用的数组元素叫备用链表,数组的第一个元素的cur用来存放备用链表的的第一个结点的下标,最后一个元素的cur用来存放第一个插入元素的下标,相当于头结点,当链表为空时,则为0^2
静态链表使用数组实现的,是顺序存储结构,在物理地址上是连续的,且需要预分配内存。但在作为线性表的插入和删除操作时不需移动元素,仅需要修改指针,故仍具有链式存储结构的主要优点
如图所示:

浙公网安备 33010602011771号