数据结构期中考试试题答案.docx
- 文档编号:10587727
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:7
- 大小:17.15KB
数据结构期中考试试题答案.docx
《数据结构期中考试试题答案.docx》由会员分享,可在线阅读,更多相关《数据结构期中考试试题答案.docx(7页珍藏版)》请在冰豆网上搜索。
数据结构期中考试试题答案
数据结构期中考试试题答案
一、 单选题(每小题2分,共8分)
1.在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。
A.n B.n/2 C.(n+1)/2 D.(n-1)/2
2.在一个带附加表头的单链表HL中,若要向表头插入一个由指针p指向的结点,则执行
D 。
A.HL=p;p->next=HL; B.p->next=HL;HL=p;
C.p->next=HL;p=HL; D.p->next=HL->next;HL->next=p;
3.若让元素A,B,C,D依次入栈,则出栈次序不可能出现 D 种情况。
A.D,C,B,A B.A,D,C,B C.B,A,D,C D.D,A,B,C
4.从一个顺序队列删除元素时,首先需要 B 。
A.前移一位队首指针 B.后移一位队首指针
C.取出队首指针所指位置上的元素 D.取出队尾指针所指位置上的元素
二、 填空题(每空1分,共32分)
1.数据的逻辑结构分为集合、线性 、树型 、 图形 四种。
2.函数重载要求参数个数、参数类型或参数次序有所不同。
3.在带附加表头的循环双向链表中,表头附加结点的左指针域指向最后一个结点,最后一个结点的右指针域指向表头附加结点。
4.在以HL为表头指针的带附加结点的单链表和循环单链表中,链表为空的条件分别为
HL->next==NULL和HL==HL->next。
5.在由数组a中元素结点构成的单链表中,删除下标为i的结点后,需要把该结点插入到空闲表的表头,具体操作为a[i].next=a[1].next、a[1].next=i。
6.在由数组a中元素结点构成的单链表中,删除下标为i的结点的后继结点并将被删除结点的下标赋给i时,所进行的操作(需要用一个临时变量p)描述为p=a[i].next
和a[i].next=a[p].next;i=p。
7.在稀疏矩阵的十字链接存储中,每个结点的down指针域指向列号相同的下一个结点,right指针域指向行号 相同的下一个结点。
8.一个广义表中的元素分为单元素和表 元素两类。
9.广义表A=((a,(b,(),c),((d),e)))的长度为1,深度为4 。
10.向一个顺序栈插入一个元素时,首先应top++,然后再将待插入元素放入栈顶位置。
11.对于队列,应在队尾进行插入,在队首 进行删除。
12.中缀表达式2+7/(4-1)所对应的后缀表达式为2741-/+@ 。
13.后缀表达式“10354-*-1+32+-”的值为 3。
14.一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),则e结点的双亲结点为 a ,孩子结点为 f ,树的深度为 4 。
三、运算题(每小题8分,共24分)
1.假定线性表L=(33,69,78,22,44,88),i=3,x=34,y=22,则对L进行下列一组操作`
ListEmpty(L); false
GetElem(L,i); 78
InsertFront(L,x); (34336978224488)
InsertRear(L,x); (3433697822448834)
DeleteFront(L); (33697822448834)
Delete(L,y); (336978448834)
Sort(L); (333444697888)
Insert(L,66); (33344466697888)
请写出每步操作后的结果。
2.假定线性表L=(33,85,21,56,30,63,42,91,76),调用顺序表的排序算法
voidSort(List&L)对此表进行排序,请写出排序过程。
(将每一步结果写出)
(1)[3385]21563063429176
(2)[213385]563063429176
(3)[21335685]3063429176
(4)[2130335685]63429176
(5)[213033566385]429176
(6)[21303342566385]9176
(7)[2130334256638591]76
(8)[213033425663768591]
3.已知一个中缀表达式为:
10-3*(2+1)+(3-1)/2@,请画出其转换为后缀表达式过程中S2及R栈的变化。
S10 3 21
R@-*(+
S10 3 2 1+
R@-*
S10 3 2 1+*-3 1
R@+(-
S10 3 2 1+*-3 1 -2
R@+/
S10 3 2 1+*-3 1 -2 /+
R
S10 3 2 1+*-3 1 -2 /+@\0
R
四、 阅读算法,回答问题(每小题8分,共16分)
1.VoidMADE(Lnode*&H1) 2.VoidAE(Stack&S)
{ {
Lnode*p; InitStack(S);
p=H1; Push(S,30);
H1=NULL; Push(S,40);
while(p!
=NULL) Push(S,50);
{ intx=Pop(S)+2*Pop(S);
lnode*q=p; Push(S,x);
p=p->next; inti,a[4]={5,8,12,15};
q->next=h1; for(i=0;i<4;i++)
H1=q; Push(S,a[i]);
} while(!
StackEmpty(S))
} cout< } 该算法的功能为: 该算法被调用后得到的输出结果为: 将原链表逆序 15 12 8 5 130 30 五、 算法填空,在画有横线的地方填写合适的内容(10分)。 删除带附加表头的单链表上第pos个元素的算法。 VoidDel(LNode*&HL,intpos) { if(pos<1){ cerr<<”posisoutrange! ”< exit (1); } inti=0; Lnode*p,*q; q=HL ; p=HL->next ; inti=1 ; while(p! =NULL){ if(i==pos)break; else{ q=p ; p=p->next ; i++ ; } if(p! =NULL){q->next=p->next ; deletep ; } else{ cerr<<”posisoutrange! ”< exit (1); } } 六、 编写算法(10分)。 写出向二叉排序树中插入一个元素的非递归算法。 Voidinsert(BtreeNode*BST,constElemType&item) { BtreeNode*t=BST,*parent=NULL; While(t! =NULL){ Parent=t; If(item Elset=t->right; } BtreeNode*p=newBtreeNode; p->data=item; p->left=p->right=NULL; if(parent==NULL)BST=p; elseif(item else parent->right=p; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期中考试 试题答案
![提示](https://static.bdocx.com/images/bang_tan.gif)