单链表详解.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单链表详解

单链表的销毁 node * dellist(node *head) { node *r; r=head; while(head!=NULL) { r=r-next; free(head); head=r; } return NULL; } 思考题 : 采用链式存储方式时,插入与删除算法的效率并没有提高(O(n)),关键问题在于需要寻找第i-1个结点的位置。假如我们将插入(删除)点位置不是以逻辑序号i的形式给出,而是以第i个结点的地址p形式给出,那么可以使得算法效率提高为O(1)。 试实现: (2)前插--将新结点*s插入结点*p之前; (1)后插--将新结点*s插入结点*p之后; (3)删除结点*p。 6. 单链表基本操作——链表逆置 a1 a2 an ···· Head an an-1 a1 ···· Head ^ ^ 6. 单链表基本操作——链表逆置 node * reverse(node *head) { node * p,*q; p=head; head=NULL; while(p!=NULL) { q=p-next; /*q指针保留p-next*/ p-next=head; head=p; /*将p结点头插入到单链表中*/ p=q; /*p指向下一个要插入的结点*/ } return head; } 7、单链表的排序 算法思想: 采用插入排序的算法思想.设置一指针变量保存已排序链表的头指针并初始化为NULL。从原始链表中取出一个结点,将其插入到已排序链表中,并保持有序性。依次类推,直到原始链表为NULL。 * * 作业 1.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点包含的年龄等于此年龄,将此节点删除。 2.建立一个链表,每个结点只有一个数据域,存放一个字符。输入一个字符,在链表中查找是否有包含该字符的结点,如果有,则在该结点后插入一个数据域为‘x’的新节点,否则将该新结点加在链表尾。 * * * * * * * * * * * * 9.7 链表 特点: ① 链表中每个元素称为一个结点。 ② 构成链表的结点必须是结构体类型数据。 ③ 链表中相邻结点的逻辑次序相邻,但物理次序不一定相邻(即地址不连续) ,结点间依靠指针将 它们连接起来。因此链表中逻辑上相邻未必在物理上相邻 在数组中,插入或删除一个元素都比较繁琐。而链表是一种动态数据结构,可根据需要动态地分配存储单元,用链表则相对容易。但是数组元素的引用比较简单,对于链表中结点数据的存取操作则相对复杂。 struct node {char c; struct node *next; }; * * 链表概念 头指针:指向链表首结点的指针。 用一组地址任意的存储单元存储一系列有先后次序的数据元素,对每一数据元素附加指针信息,以便表述元素间的逻辑关系。 因每个结点仅有一个指针域,故称作单链表。 指针:指示后继元素存储地址。 数据元素 指针 结 点 * * 单链表的示例图 头指针H 存储地址 数据域 指针域 1 D 43 7 B 13 13 C 1 19 H NULL 25 F 37 31 A 7 37 G 19 43 E 25 31 “头指针”,以变量head表示,它存放一个地址,该地址指向一个称为“结点”的元素; 每个结点都应包括两部分:用户需要用的实际数据和下一结点的地址(指针域); 最后一个结点,该结点的指针域不再指向其他结点,它称为表尾,它的指针域放一个NULL(表示空地址),链表到此结束。 1356 A 1249 1249 head 1475 B 1356 1021 C 1475 NULL D 1021 链表结点的结构体定义 typedef struct student { int id;

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档