数据结构-第3次课第二章线性表(链表).ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-第3次课第二章线性表(链表).ppt

一、建立单链表 问题:假设线性表中结点的数据类型是字符,逐个输入这些字符型的数据,并以换行符‘$’为输入结束标记。 动态地建立单链表的常用方法有如下两种: 1、头插法建表 该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志 比如$)为止。 p new LNode; p- data ch; p- next head; head p; cin ch; /* void List::CreateList1 List h char ch; LNode *p; cin ch; while ch! $ p new LNode; p- data ch; p- next head; 四、删除运算 删除运算是将表的第i个结点删去。因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中,所以必须首先找到ai-1的存储位置p。然后令p– next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间。此过程为: ai-1 ai ai+1 p p- next p- next- next; 四、删除运算 删除运算是将表的第i个结点删去。因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中,所以必须首先找到ai-1的存储位置p。然后令p– next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间。此过程为: ai-1 ai ai+1 p p- next p- next- next; 问题:链表的逻辑结构已正确了,但结点ai空间丢了。 四、删除运算 删除运算是将表的第i个结点删去。因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中,所以必须首先找到ai-1的存储位置p。然后令p– next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间。此过程为: ai-1 ai ai+1 p p- next p- next- next; r p- next; p- next r- next; delete r; 四、删除运算 删除运算是将表的第i个结点删去。因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中,所以必须首先找到ai-1的存储位置p。然后令p– next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间。此过程为: ai-1 ai ai+1 p p- next p- next- next; r p- next; p- next r- next; delete r; r 以元素(数据元素的映象)+指针(指示后继元素存储位置) 结点(表示数据元素)。 List可访问类LNode中得所有成员 #include class List; class LNode public: char data; LNode *next; ; class List LNode *head; public: List head NULL; void CreateList ; void CreateList1 List h ; void print ; ; void List:: CreateList char ch; LNode *p; cin ch; while ch! $ p new LNode; p- data ch; p- next head; head p; cin ch; /* void List::CreateList1 List h char ch; LNode *p; cin ch; while ch! $ p new LNode; p- data ch; p- next head; h.head p; cin ch; */ void List::print LNode *p head; while p! NULL cout p- data ; p p- next; cout endl; void main List h1,h2; h1.CreateList ; h1.print ; //h2.CreateList1 h2 ; //h2.print ; 2.3 线性表的链式表示和实现 线性链表 链表是指用一组地址任意的存储单元来依次存放线

文档评论(0)

书屋 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档