线性表顺序与链式存储的对比分析by熊猫烧香Page2目录顺序与链式存储的结构对比删除算法的对比分析查找算法的对比分析插入算法的对比分析Page301顺序与链式存储的结构对比一、顺序存储在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构.二、链式存储在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).称作线性表的链式存储结构.Page402插入算法的对比顺序存储的插入(1)不用查找插入位置i,只需要判断i的合法位置,其范围是1iL.length+1,否则不合法;(2)必须明确规定储存规模,若L.lengthL.listsize说明线性表满了,不能进行插入数据元素操作,要增加存储空间的分量或者作错误处理。(3)将线性表的最后一个数据元素到第i-1个数据元素依次往后移动一个数据单元,空出第i-1个位置的数据单元;(4)把新的数据元素插入到刚才空出来的数据单元中,长度+1.Page5链式存储结构的插入(1)链式存储的线性表做插入操作,不判断线性表是否满,但是要从头指针开始,通过循环语句while(n&&ji-1)循环查找第i-1个节点。(2)判断i的合法性,i的合法范围是1in,否则就不合法。(3)申请一个节点的存储空间,并用一个指针变量指向这个节点,把需要插入的数据元素赋值给这个节点的数据域中。(4)修改插入数据元素的指针,完成插入操作Page603删除算法的对比分析顺序存储的删除算法(1)不用查找删除位置i,也不用另外判断线性表是否为空,只要取值为1iL.length就包括了线性表判空操作和删除位置的合法性判断了,否则不合法。(2)将线性表的第i+1个数据元素到最后一个数据元素依次往前移动一个数据单元,就算删除了第i个数据元素。可选择是否保留删除数据。(3)线性表长度减1。(虽然最后一个数据元素仍然存在,但已经不是操作中的有用数据了)Page7链式存储的删除算法(1)链式存储的线性表做删除操作前,要从头指针开始,通过循环语句while(p-next&&ji-1)循环查找需要删除的第i个节点(2)判断第i个节点的合法性,i的合法范围是1in,否则不和法。(3)修改删除数据元素的指针,完成删除操作(4)释放删除结点的存储空间。Page804查找算法的对比分析顺序存储可以根据存储数据元素要求不同而分成以下几种算法:(1)顺序查找算法,即以遍历所有元素为目标,与每个数据元素进行比较,若相等则查找成功,若遍历后仍无相等元素则没有查找的数据。(2)折半查找是要求顺序存储和存储的数据元素有序,查找时把给定的关键字与表中的中间位置元素进行比较,若相等就查找成功,若关键字比中间位置大,则下次在右半部分查找;反之则下次在左半部分查找,依次重复,直到遍历所有数据元素也没有找到与关键字相等的数据元素存在,则查找失败。(3)索引查找是把顺序表(主表)中的数据元素等分成相等的几部分(子表),使后一个子表的所有数据元素均大于前一个子表的最大数据元素,并用每一个子表的最大关键字建立索引表。进行查找时,将给定关键字先与索引表中的关键字进行比较,确定此关键字属于哪一个子表,再在这个子表上进行查找。Page9链式存储查找算法链式存储可以根据存储数据元素要求的不同而分成以下几种链表形式的查找算法:(1)单链表。只能从头指针开始,一个结点接着一个结点地顺序查找,不能找节点前驱,只能找结点后继结点。(2)循环链表。可以从头指针开始,也可以从尾指针开始顺序地查找结点的后继元素。(3)双向链表。从头指针开始顺序查找结点,即可以查找结点的前驱元素,也可以查找结点的后继元素。Page1005优缺点的对比顺序存储优点:1、随机存取运算便捷。对表中任一结点都可在O(1)时间内直接取得2、存储密度大(=1),存储空间利用率高。缺点:1、插入和删除运算不方便,平均要移动表中近一半的结点。信息量较大。2、由于要求占用连续的存储空间,存储分配只能按最大存储空间预先进行,可能造成空间浪费。3、扩充容量需继续申请。Page11链式存储优点:1、插入、删除操作很方便,可通过修改结点的指针实现,无须移动元素。2、方便扩充存储空间。只要内存空间尚有空闲,就不会产生溢出。缺点:1、不能随机存取元素。2、存储密度小(1),存储空间利用率低Page1206小结1、顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。2、若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;若线性表的长度变化较大,难以估算存储规模,且其主要操作是插入、删除操作,则采用链表。谢谢观赏