数据结构820记忆性题总结(By Dawnon).docx

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

数据结构及算法的相关概念和术语数据结构及算法的概念;数据结构三要素:逻辑结构、存储结构和数据的运算。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据的逻辑结构和存储结构;数据的物理结构主要包括 顺序存储结构 和 链式存储结构 两种情况。数据的逻辑结构是对数据之间关系的描述,主要有 线性结构 和 非线性结构 两大类。线性结构主要包括以下几种数据结构(1) 线性表的顺序和链式结构 (2) 栈和队列 (3) 串 (4) 数组和广义表 算法的定义及特性;算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法特性:有穷性、确定性、可行性、输入和输出。一个“好”的算法应考虑达到以下目标: 正确性 、 可读性 、 健壮性 和 效率与低存储量需求 。算法是 指令的有限序列 。算法时间复杂度和空间复杂度的分析方法。线性表线性表的定义线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。数组结构的特性是 它是线性表的扩充 和 可进行随机访问 。线性表的基本操作及在顺序存储及链式存储上的实现;线性表是一种逻辑结构,顺序表和链表是指存储结构。线性表的基本操作:InitList(L)Length(L)LocateElem(L,e)GetElem(L,i)ListInsert(L,i,e)ListDelete(L,i,e)PrintList(L)Empty(L)DestroyList(L)顺序表:静态分配#define MaxSize 50typedef struct{ElemType data[MaxSize]; int length;}SqList;动态分配#define InitSize 100typedef struct{ElemType *data;int MaxSize,length;}SeqList;动态分配语句:L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);单链表:typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;双链表:typedef struct DNode{ElemType data;struct DNode *prior,*next;}DNode,*DLinklist;静态链表:#define MaxSize 50typedef struct{ElemType data;int next;}SLinkList[MaxSize];读取数组给定下标的数据元素的操作,称为 取值 操作;存储或修改数组给定下标的数据元素的操作,称为 赋值 操作。线性表有哪两种存储结构?在这两种存储结构中元素之间的逻辑关系分别是通过什么决定的?答:有顺序和链式两种存储结构,顺序结构中元素之间的逻辑关系由物理存储位置决定,链式结构中元素之间的逻辑关系由链指针决定。若表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取表中的元素,这时应采取哪种存储表示?为什么?答:采用顺序表。若表的总数基本稳定,且很少进行插入和删除,则顺序表可以充分发挥它的存取速度快、存储利用率高的优点。各种变形链表(循环链表、双向链表、带头结点的链表等)的表示和基本操作的实现;简述单链表中设置头结点的作用。答:引入头结点后,可以带来两个优点: (1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作和在表其它位置上的操作一致,无须进行特殊处理。 (2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就统一了。如果有n个表同时并存,并且在处理过程中各表的长度会动态发生变化,表的总数也可能自动改变,在此情况下,应选用哪种存储表示?为什么?答:采用链表。如果采用顺序表,在多个表并存的情况下,使用表浮动技术在同一存储空间内定义多个顺序表,初始时把整个空间均等地分配给每个表,在问题求解的过程中,一旦发现某个表有放满并溢出的情况,必须移动其它表以扩充溢出表的空间,导致不断把大片空间移来移去,不但时间耗费很大,而且操作复杂,容易出错。如果表的总数还要变化,操作起来就更困难。如果采用链表就没有这些问题,各个表自行扩充,各自操作。为什么在单循环链表中设置尾指针比设置头指针更好?答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使查找链表的开始结点和终端结点都很方便。设置一个带头结点的单循环链表,其尾指针是rear,则开始结点和终端结点分别为指针rear所指结点的后继结点的后继结点和指针rear所指结点,即rear-next-next和rear,查找时间均为O(1)。若用头指针来表示该链表,则查找开始结点为O

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档