数据结构考点.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 考点解析;数据结构考点解析;考试的要求;2) 掌握分析、比较和选择不同数据结构、不同存储结构、不同算法的原则和方法。 技能方面 系统地掌握基本数据结构的设计方法; 掌握选择结构的方法和算法设计的思考方式及技巧; 提高分析问题和解决问题的能力。 ;本章“线性表”的知识点有 5 个: 线性表的定义和特点:由数据元素组成,惟一直接前驱与后继。 线性表的基本操作:查找、定位、遍历、插入、删除。 线性表的存储表示:顺序存储、链表存储。 循环链表和双向链表:定义和基本运算。 线性表的应用:掌握使用线性表基本操作实现应用算法;线性表的定义和特点;问题2. 如果一个元素集合有一个元素仅有 1 个直接后继而没有直接前驱,另一个元素仅有 1 个直接前驱而没有直接后继,其他每个元素都仅有 1 个直接前驱和 1 个直接后继,但其中各个元素可能数据类型不同,该元素集合是线性表吗? 解析:答案“是”,它符合线性表的定义和特性,只要把元素定义为Union类型即可。因为线性表的定义只规定了元素间的关系及每个表元素是原子类型,并未规定每个表元素的类型必须相同。Union是一种等价类型,它允许不同类型数据共享同一存储空间,可保证每个表元素所占空间相同。;线性表的基本操作;线性表的存储表示;问题6. 为了统一空链表和非空链表的操作,简化链表的插入删除操作,需要给链表增加点什么? 解析:“增加表头结点”。 问题7. 在何种场合选用顺序表?链表呢? 解析:从时间角度来看,需要经常查看不需经常增删的场合使用顺序表,因它可直接存取,但增删要大量移动存储块;反之,选择链表,因它在增删元素时不需移动存储,修改指针即可,但只能顺序访问,存取速度慢。从空间角度来看,顺序表存储密度(有效存储/总存储)高,空间利用率好;链表存储密度较低,空间利用率差一些。;循环链表和双向链表;问题9. 想要判断一个带表头结点的循环链表L是否为空,应采用何种语句? 解析: “L-link==L”。空表还需保留一个表头结点,它的下一个结点还是它自己。 问题10. 想要以O(1)的时间代价访问第 i 个表元素的直接前驱和/或直接后继,应采用何种链表结构? 解析:“双向链表”。只要事先定位于该表结点,通过该结点的前驱指针和后继指针,直接能够找到该元素的直接前驱或直接后继。;例1: 在一个单链表中,已知q结点是p结点的前趋结点, 若在q和p之间插入s结点,则须执行 ( ) A.s-next=p-next; p-next=s B.q-next=s; s-next=p C.p-next=s-next; s-next=p D.p-next=s; s-next=q;例2: 假设有一个带表头结点的链表,表头指针为head, 每个结点含三个域:data, next和prior。其中data为整 型数域,next和prior均为指针域。现在所有结点已经由 next域连接起来,试编一个算法,利用prior域(此域 初值为NULL)把所有结点按照其值从小到大的顺序链 接起来。 定义类型LinkList如下: typedef struct node { int data; struct node *next,*prior; }LinkList;;例3: 设顺序表L是一个递减有序表,试写一算法,将x插 入其后仍保持L的有序性。 //-----线性表的动态分配顺序存储结构----- #define maxlen 100 //线性表存储空间最大容量 typedef struct {ElemType *elem; //存储空间基址 int len; //当前长度 }SqList;;例4: 完成以下算法,对单链表实现就地逆置。 void LinkList_reverse(Linklist L) {//链表的就地逆置;为简化算法,假设表长大于2 Linklist p,q,s; p=L-next; q=p-next; s=q-next; p-next=NULL;;例5: 循环链表存储结构示意图如下,请填空: typedef struct LNode // 结点类型 { ElemType data; // 数据单元 LNode *next; // 指针单元 }*Link,*Position; //定义两个结点指针别名,用于操作函数 typedef LNode *LinkList; // 简单链表类型;循环链表初始化函数InitList的参考代码,一个空的 循环链表至少要包含一个头结点。 void InitList(LinkList L) { // 操作

文档评论(0)

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

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

1亿VIP精品文档

相关文档