编号:0025 座位号:
17-18学年第1学期期末考试
数据结构 试题
一、选择题:(每题2分,共20分)
1.在一个单链表中,若要向指针p指向的结点之后插入一个由指针q指向的结点,则执行______。
A.q=p; p->next=q;
B.q->next=p->next; p->next=q;
C.p->next=q; p=q;
D.p->next=q->next; q->next=p;
2.在稀疏矩阵的十字链接存储中,每个行单链表中的结点都具有相同的_____。
A.元素值 B.行号
C.列号 D.地址
3.栈的插入和删除操作在___进行.
A.栈顶 B.栈底
C.任意位置 D.指定位置
4.在一棵高度为4的二叉树,最多含有__个结点。
A.8 B.12
C.16 D.15
5.根据下列二叉树遍历的结果为C,D,B,G,F,E,A,则此遍历为__。
A A.前序
B E B.中序
C D F C.后序
G D.层次
二、填空题:(每空2分,共20分)
1.在线性结构,树结构和图结构中,前驱和后继结点分别存在着________、 ________和________的联系。
2.在一棵二叉排序树中,每个分支结点的左子树上所有结点的值一定_____该结点的值,右子树上所有结点的值一定_____该结点的值。
3.一个具有4个顶点的无向完全图中,包含有_______条边,在一个具有n个顶点的有向完全图中,包含有_______条边。
4.对于一个具有n个顶点和e条边的有向图和无向图,若采用边集数组表示,则存于数组中的边数分别为________和________。
5.假定一组记录的排序码为(46,79,56,38,40,84),则利用堆排序方法建立的初始堆为___________________________________。
三、问答题:(共40分)
1.已知一个后缀算术表达式为:6 3 20 5/*8-6*+@ (20分)
(1) 写出对应的中缀算术表达式
(2) 画出在进行后缀表达式求值的过程中数值栈的变化
2.已知一组元素的排序码为(36,25,48,12,65,20),用直接插入排序法每次向前面有序表插入一个元素后的排列结果。(20分)
四、阅读算法,写出执行后的结果(20分)
Queue Q;
InitQueue(Q);
int a[4]={5,8,12,15};
for(int i=0;i<4;i++) QInsert(Q,a[i]);
QInsert(Q,Qdelete(Q));
QInsert(Q,30);
QInsert(Q,Qdelete(Q)+10);
while(!QueueEmpty(Q)) cout<<QDelete(Q)<<’’;
结果为:_________________________________。