第2章数据结构.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文档。上传文档
查看更多
算法分析 例 2-3 LinkList merge_1(LinkList LA,LinkList LB) { //此算法将两个采用头指针的循环单链表首尾连接起来 Node *p,*q; p=LA; q=LB; (2) 线性表的单链表存储结构 * 通过每个结点的指针域将线性表中 n 个结点按其逻辑顺序链接在一起的结点序列称为链表,即为线性表 ( a1, a2, a3, …, ai, …, an ) 的链式存储结构。如果线性链表中的每个结点只有一个指针域,则链表又称为线性链表或单链表 (linked list)。 例:线性表如下: (ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG) 线 性 链 表 在 内 存 的 存 储 结 构 起始地址 * 数据域 指针域 存储地址 LI 43 1 QIAN 13 7 SUN 1 13 WANG NULL 19 WU 37 25 ZHAO 7 31 ZHENG 19 37 ZHOU 25 43 ZHAO QIAN SUN LI ZHOU WU ZHENG WANG ^ 31 7 13 1 43 25 37 19 * 线性表的单链表存储表示: typedef struct Node { ElemType data; /* 数据域*/ struct Node *next; /*指针域*/ } Node, *LinkList; /*单链表的类型名*/ (2) 线性表的单链表存储结构 通过每个结点的指针域将线性表中 n 个结点按其逻辑顺序链接在一起的结点序列称为链表,即为线性表 ( a1, a2, a3, …, ai, …, an ) 的链式存储结构。如果线性链表中的每个结点只有一个指针域,则称链表又称为线性链表或单链表 (linked list)。 (3) 头结点和头指针 * 在单链表的第一个结点之前附加一个同结构的结点,称之为头结点。头结点的数据域可以不存储任何信息也可以存储如线性表的长度等类的附加信息;头结点的指针域指向第一个结点(即第一个元素结点的存储位置)。 头指针就是指向头结点的指针。当头结点的指针域为 “空” 时,单链表为空链表。 头指针 L a1 a2 an ∧ 头结点 L ∧ * 非空单链表 空链表 建立线性表的链式存储结构的过程是一个动态生成单链表的过程,即从 “空表” 的初始状态起,依次建立各元素结点,并逐个插入到单链表中。 (1) 算法思想 首先建立一个空表,然后重复下面操作: 生成一个新结点; 读入数据,并存入新结点的数据域; 将新结点插入到单链表的头结点之后; 修改单链表头结点的指针域。 * 2. 建立单链表 (头插法) 2.3.1 线性表的链式存储表示 ∧ L s ∧ c1 s cn s c2 s-next = L-next L-next = s s-next = L-next L-next = s s-next = L-next L-next = s * * p45:算法编写(线性表的长度不知道) void GreateFromHead ( LinkList L) { / *L是已经初始化好的空链表的头指针,通过键盘输入表中元素*/ /*值,利用头插法建单链表L*/ Node *s; char c; int flag=1; While (flag) /* flag初值为了,当输入”$”时,置flag为0,建表结束*/ { c=getchar( ) ; if (c!=’$’ ) { s= (Node *) malloc ( sizeof (Node ) ); /* 生成新结点*/ s-data=c; s-next = L-next; /* 将新结点插入到单链表的头*/ L-next =s; /* 修改单链表头结点的指针域*/ } /* while结束*/ else flag=0 /*若输入字符为$,置flag=0*/ } } /*CreatFromTail*/ (1) 算法思想 在单链表中,任何两个元素存储位置间没有固定的联系,每一个元素的存储位置都包含在其直接前驱结点的next之中。 假设 p 是指向线性表中第

文档评论(0)

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

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

版权声明书
用户编号:8134116003000000

1亿VIP精品文档

相关文档