《数据结构》填空作业题(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》填空作业题答案
第1章绪论(已校对无误)
1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3. 数据结构的形式定义为:数据结构是一个二元组:Data Structure =(D,S)。
4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7. 在树形结构中,数据元素之间存在一对多的关系。
8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9. 数据的逻辑结构包括线性结构、树形结构和图形结构3种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14. 数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16. 数据元素可由若干个数据项组成。
17. 算法分析的两个主要方面是时间复杂度和空间复杂度。
18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切
的定义,并在有穷时间内计算出结果。
21. 下面程序段的时间复杂度为㏒3n 。
i=1;
while(i<=n)
i= i﹡3;
第2章线性表(已校对无误)
1. 一线性表表示如下:(a1,a2,…,a i-1,a i,a i+1,…,a n),其中每个a i代表一个数据元素(或结点)。a1称为起始结点,a n称为终端结点,i称为a i在线性表中的位置(或序号)。对任意一对相邻结点a i,a i+1,(1≤i≤n),a i称为a i+1的直接前驱,a i+1称为a i的直接后继。
2. 对一个长度为n的线性表,要删除第i个元素,则在顺序表示的情况下,计算复杂性为O(n) ,在链式表示的情况下,计算复杂性为O(1) 。
3. 在一个长度为n的顺序表中,向第i个元素(1≤i≤n)之前插入一个新元素时,需向后移动n -i+1 个元素。
4. 顺序表中逻辑上相邻的元素在物理位置上一定相连。
5. 在n个结点的顺序表中插入一个结点需平均移动n/2 个结点,具体的移动次数取决于表长n和插入位置i 。
6. 在顺序表中访问任意一个结点的时间复杂度均为O(1) ,因此,顺序表也称为随机访问的数据结构。
7. 顺序表相对于链表的优点有随机访问和空间利用率高。
8. 在长度为n的顺序表中插入一个元素的时间复杂度为O(n) 。
9. 在带有头结点的单链表L中,若要删除第一个结点,则须执行下列三条语句:U=L->next ;L->next=U->next;free(U)。
10. 链表相对于顺序表的优点有插入和删除操作方便。
11. 在单链表中除首结点外,任意结点的存储位置都由直接前驱结点中的指针指示。
12. 在n个结点的单链表中要删除已知结点*p,需找到它的直接前驱结点的地址,其时间复杂度为O(n) 。
13.单链表中设置头结点的作用是简化操作,减少边界条件的判断。
14.在带表头结点的单链表中,当删除某一指定结点时,必须找到该结点的前驱结点。
15. 在双链表中,每个结点有两个指针域,一个指向前驱结点,另一个指向后续结点。
16. 带头结点的单链表L为空的判定条件是L->next==NULL ,不带头结点的单链表L为空的判定条件是L==NULL 。
17. 在单链表中,指针p所指结点为最后一个结点的条件是p->next==NULL 。
18. 循环链表的最大优点是从表中任意结点出发都可访问到表中每一个元素(或从表中任意结点出发都可遍历整个链表)。
19. 设rear是指向非空、带头结点的循环单链表的尾指针,则该链表首结点的存储位置是rear->next->next 。
20. 带头结点的双向循环表L为空表的条件是L->prior== L->next 。
21. 在循环链表中,可根据任一结点的地址遍历整个链表,而单链表中需知道头指针才能遍历整个链表。
22. 将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 1 。
第3章栈和队列(已校对无误)
1. 栈又称为后进先出表,队列又称为先进先出表。
2. 向一个顺序栈插入一个元素时,首先使栈顶指针后移一个位置,然后把待插入元素写入(或插入)到这个位置上。
3. 从一个栈删除元素时,需要前移一位栈顶指针。
4. 在一个顺序栈中,若栈顶指针等于-1 ,则为空栈;
若栈顶指针等于maxSize-1 ,则为满栈。
5. 在一个链式栈中,若栈顶指针等于NULL,则为空栈;在一个链式队列中,若队头指针与队尾指针的值相同,则表示该队列为空或该队列只含有一个结点。
6. 向一个链式栈插入一个新结点时,首先把栈顶指针的值赋给新结点的指针域,然后把新结点的存储位置赋给栈顶指针。
7.在求表达式值的算符优先算法中使用的主要数据结构是栈。
8.设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s4,s6,s5,s1,则顺序栈的容量至少为 3 。
9. 设有一个空栈,现输入序列为1,2,3,4,5。经过push,push,pop,push,pop,push,pop,push后,输出序列是2 3 4 。
10. 在按算符优先法求解表达式3-1+5*2时,最先执行的运算是* ,最后执行的运算是-。
11. 在栈的ADT定义中,除初始化操作外,其他基本操作的初始条件都要求栈存在。
12. 仅允许在同一端进行插入和删除的线性表称为栈。
13. 在顺序栈s中,栈为空的条件是s.top==s.base ,栈为满的条件是s.top-s.base>=s.stacksize 。
14. 设有算术表达式x+a*(y-b)-c/d,该表达式的前缀表示为-+x*a-yb/cd 。
后缀表示为xayb-*+cd/-。
15. 用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1234,为了得到1342出栈顺序,相应的S、X操作串为SXSSXSXX 。
16. 向一个栈顶指针为top的链式栈中插入一个新结点*p时,应执行p->link=top 和top=p