数据结构02线性表幻灯片.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 这里的合法是指:顺序表空闲区段是否还有空闲结点,或者位置号i是否落在1和n + 1之间 挪位是为了; 保证新结点插入后,顺序表仍旧保持顺序存储的结构特性 * 头结点即在链表的首元结点之前附设的一个结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便。 * 表示每个数据元素的两部分信息组合在一起被称为结点; 其中表示数据元素内容的部分被称为数据域(data); 表示直接后继元素存储地址的部分被称为指针或指针域(next)。 在单链表第一个结点前附设一个结点叫头结点 单链表可由一个头指针唯一确定 * 不再像非循环链表那样判断 p 或 p ??next 是否为空,而是判断它们是否等于头指针 循环条件 单链表 ----- p = NULL 或 p -next =NULL 循环链表----- p= head 或 p-next = head * 内部排序 插入 ( Insert ) 直接插入(Straight Insertion Sort) 希尔排序(Shell Sort) 交换(Swap) 冒泡排序 (Bubble Sort) 快速排序(Quick Sort) 选择 (Select) 直接选择 ( Straight Selection Sort) 堆排序 (Heap Sort) 归并(Merge Sort ) * 在已形成的有序表中线性查找,并在适当位置插入,把原来位置上的元素向后顺移 * 暂存S[i];监视是否j1,查找插入位置是从已排好序子序列尾部向前进行的,哨兵结点起监视查找终止的作用 * 简单交换排序有一个严重的缺点,每一次比较都有可能发生两结点交换 尾插入法 一、建立一个“空表”; 二、输入数据元素a1≠-1,建立结点并在Q的终结点后插入; a1 Q -1 p -1 r-next=p; 三、输入数据元素a2 ≠-1 ,建立结点并在Q的终结点插入; r r Q r=p; a1 -1 Q r a2 p-data=a2; p p-next=NULL; r-next=p; r=p; 四、依次类推,直至输入-1为止。 程序见书中P××程序2-2。 因为每个新生成的结点的插入位置在表尾,则算法中必须维持一个始终指向已建立的链表表尾的指针r 按号定位 单链表中,为找第 i 个数据元素,必须从单链表的头指针出发,沿着链指针方向对结点顺序逐个扫描、计数;当计数值等于i时,定位完成。 令指针 p 始终指向线性表中第 j 个数据元素 例如: 算法搜索表Q,找出第i结点的指针输出 21 18 30 75 42 56 ∧ p p p j 1 2 3 Q i=3 因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i 。 程序见书中P××。 按值定位 算法搜索表Q,找出结点数据与x值相等的结点,并输出该结点指针 当遇到结点数据与x 值相等时,或比较完所有结点时,即结束扫描。 因此,查找值为x结点的基本操作为:移动指针,比较 p-data和 x 。 21 18 30 75 42 56 ∧ Q x=30 p p p p p p p p p p p p-data==x 返回p x=53 p==NULL 返回p 例如: 程序见书中P××。 求表长 只要设一个移动指针沿着链指针方向对结点顺序逐个扫描、计数;当扫描完所有结点,计数完成。 例如:p为移动指针 ,j为计数器 统计单链表L中结点的个数,并输出 因此,求表长的基本操作为:移动指针,计数器自加 。 程序见书中P××。 21 18 30 75 42 56 ∧ p p p j 1 2 3 Q p p p 4 5 6 next(p)=∧,结束扫描,返回j的值 插入 x s s ?? next = p ?? next; p ?? next = s; p ai ai –1 插入该新结点,使之成为单链表Q的第i个结点 1 首先找到 ai -1 的存储位置 p 2 生成一个数据域为 x 的新结点 3 插入新结点:①、结点 ai -1的指针域指向新结点 ②、新结点的指针域指向结点 ai 程序见书中P××。 删除 把第i个结点从单链表Q中删除掉 1 首先找到 ai -1 的存储位置 p 2 令 p-next 指向 ai +1 3 释放结点ai的空间 p ?? next = p ?? next ?? next; p ai –1 ai ai+1 程序见书中P××。 合并 操作把A、B两单链表进行合并,A在前B在后,并把合并结果仍存储在A中 分析: 对链表来说,“插入”和“

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档