数据结构综合练习题(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构综合练习题
一、简答题:
1、简述堆栈和队列两种数据类型的异同点。
栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
2、什么静态查找表和动态查找表。
静态查找表——仅作查询和检索操作的查找表。
动态查找表——在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素。
3、试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?
答:① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。
优点:存储密度大(=1),存储空间利用率高。缺点:插入或删除元素时不方便。
②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(<1),存储空间利用率低。
顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。
若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;
若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
4、分析稳定的排序和不稳定的排序方法。
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
5、图的存储结构有哪些?
十字链表,邻接矩阵,邻接表,邻接多重表,二维数组。
6、简述度为2的树与二叉树的区别。
二叉树的度最大为2,而树的度无此限制。在二叉树中,一个节点的子树有左、右之分,不能互换位置。而度为2的树则无此限制。
三、程序分析写结果:
1、写出下列程序段的输出结果(栈的元素类型为
char;字符型)。Stack
V oid main()
{
Stack S;
Char x,y;
InitStack(S);
X=‘c’; y=‘k’;
Push(S,x); Push(S,’a’); Push(S,y);
Pop(S,x); Pus h(S,’t’); Push(S,x);
Pop(S,x); Push(S,’s’);
While(!StackEmpty(S)){Pop(S,y); printf(y); };
Printf(x);
}
2、写出下列程序段的输出结果(队列的元素类型为
char;字符型)。Char
V oid main()
{
Queue Q;
InitQueue(Q);
char x=‘e’,y=‘c’;
EnQueue(Q,’h’); EnQueue(Q,’r’); EnQueue(Q,y);
DeQueue(Q,x); EnQueue(Q,x);
DeQueue(Q,x); EnQueue(Q,’a’);
while(!QueueEmpty(Q))
{ DeQueue(Q,y); printf(y); }
printf(x);
}