- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课件 2-线性表
* 在很多实际问题中,表的操作常常是在表的首尾位置上进行,此时头指针标识的单循环链表就显得不够方便。 * 结点p 的存储位置既存放在其前趋结点 (p-prior) 的直接后继指针域中,也存放在它的后继结点(p-next)的直接前趋指针域中。 * 结点p 的存储位置既存放在其前趋结点 (p-prior) 的直接后继指针域中,也存放在它的后继结点(p-next)的直接前趋指针域中。 * 单链表的插入和删除操作不同的是,在双链表中插入和删除必须同时修改两个方向上的指针。上述两个算法的时间复杂度均为O(1)。 * 空间角度: (1) 顺序表的存储空间是静态分配的,在程序执行之前,必须明确规定它的存储规模。若线性表的长度n 变化较大,存储规模难于事先确定。估计过大将造成浪费,估计的太小又使空间的溢出率增多。动态链表的存储空间是动态分配的,只要内存空间尚有空闲,就不会溢出。 (2)存储密度是指结点数据本身所占的存储量和整个结点结构所占的存储量之比。存储密度越大,存储空间的利用率越高。显然,顺序表的存储密度为1,链表的存储密度小于1。 时间角度: 顺序表由数组实现,它是一种随机存取结构,对表中任意结点都可以在O(1)时间内直接地存取,而链表中的结点需要从头指针开始顺着链扫描才能取得,时间复杂度为O(n)。 在链表的任意位置上进行插入和删除,都仅需要修改指针;而在顺序表上进行的插入和删除平均要移动表中近一半的结点,尤其是每个结点的信息量较大时,移动结点的时间开销就更可观了。 Normal, circle Lianxi 3 sl shixian:arrary keypoint Contrast with Int I; i=10; Advance: (1) DELETE (2) address +,- (with i++) * * 结点结构:data|next p=new LNode; 的结果,并引出*P结点的描述方法 * 插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到ai-1与ai之间。因此,我们必须首先找到ai-1的存储位置p,然后生成一个数据域为x的新结点p,并令结点p的指针域指向新结点,新结点的指针域指向结点ai。从而实现三个结点ai-1,x和ai之间的逻辑关系的变化,插入过程如: * 单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next * LinkList GET(LinkList head,int i) { int j; LinkList p; /* p是扫描指针,j是计数器*/ if (i1) /*位置非法*/ {printf(the position is infeasible ); return(NULL); } else { p=head; j=0; while ( p!=NULL (ji) ) { p=p-next; j++; } /*循链扫描,寻找第i个结点*/ If(i==j) return p; else return null; /*查找失败,函数值为空值*/ } } 性能分析:get操作与 i 取值有关,平均时间复杂度为O(n/2)。 * (2)按值查找 基本思想:与按序号查找类似,借助扫描指针, 从第一个结点开始扫描, 循环,判断当前结点的取值是否为e,且链表未结束 继续向后查找 返回查询结果 LNode *LocateElem_L(LinkList L, ElemType e) {LinkList p=L; /*p是扫描指针*/ while ( p (p-data!=e) ) p=p-next; /*循链扫描,查找取值为e的结点*/ return(p); /*查找成功,返回找到结点的地址,查找失败返回空*/ } * 3. 插入 插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到ai-1与ai之间, 有序对ai-1,ai改变为 ai-1,x 和x,ai。 ai ai-1 ai-1 x s p (1)找到ai-1的存储位置p (2)生成一个数据域为x的新结点s : s=new Lnode; (4)结点p的指针域指向新结点:p-next=s; (3)新结点的指针域指向结点ai:s-next= p-next; 建立了结点ai-1,x,ai 之间新的逻辑关系 * 5、删除 删除运算是将表的第i个结点删去。有序对ai-1,ai、ai,ai+1改变为 ai-1 ,ai+1。 (1) 找到 ai-1 的存储位置p (3) 令p–nex
您可能关注的文档
最近下载
- 成人鼻肠管的留置与维护(2021团体标准解读)全文.pptx
- 【国家标准】国家职业技能标准 (2019年版) 起重装卸机械操作工.pdf VIP
- 小儿轮状病毒性肠炎护理ppt.pptx
- Pilon骨折精品课件.ppt VIP
- 中纺机集团对下属企业工资总额管理办法介绍.docx VIP
- 中国银行新疆区分行招聘笔试试题2024 .pdf VIP
- 2025中国银行新疆区分行社会招聘笔试备考题库及答案解析.docx VIP
- 2024电能计量装置典型设计低压用电客户.docx VIP
- 粗轧机AWC液压控制系统故障原因分析和改进.pdf VIP
- 2025年中国银行社会招聘备考试题及答案解析.docx VIP
文档评论(0)