数据结构期中试卷

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define MAXSIZE 10 typedef struct stbl
{datatype elem[MAXSIZE]; int last; }SqlType; 2.(7分)请编写一算法,在一个按数据元素大小递增的线性链表中插 入一个数据元素,让其仍然保持递增有序。 typedef struct node {datatype data; struct node *next; }Lnode, *Lpointer;
结点。 10 设计一个判别表达式中左右括号是否配对的算法,采用 ⑩ 数据结 构最佳。
二、选择题(共20分,每空2分)
题①②③④⑤⑥⑦⑧⑨⑩小


选 择
1设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出
栈的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是 ① 。
}
void searchinsert(int x; pnode t) //t为二叉排序树的根指针
{ if ( ① )
{ p=malloc(size);
p→key= ② ;
p→left=NULL;
p→right= ③ ;
t=p; }
else if (x<t→key) searchinsert(x, t→left)
请为这7个字母设计哈夫曼编码。
(注:写出设计过程)
2一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示
出来。试求出空格处的内容,并画出该二叉树。
先序序列 B F ICEH G 中序序列D KFIA EJC
后序序列 K
FBHJ G A
3分别用顺序存储结构和链式存储结构画出下图所示二叉树的存储结
6 已知L是一单链表,p^结点既不是首元结点,也不是尾结点,那么在
p^结点后插入s^结点的语句序列是 ⑥ ,删除p^结点的直接后继的语句
序列是 ⑦ 。
1 s→next=p→next
2 p→next=s→next
3 p→next=p→next→next
4 free(q) 5 q=p→next 6 p→next=s 7 深度为6的二叉树最多有 ⑧ 个结点。 A) 64 B) 63 B) 32 D) 31 8为了提高内存空间的利用率和减少溢出的可能性,由两个栈共享一片 连续的存储空间时,
A) 2 B) 3 C) 5 D) 6
2链栈和顺序栈相比,有一个较明显的优点是 ② 。
A) 通常不会出现栈满的情况 B) 通常不会出现栈空的情况
C) 插入操作更加方便
D) 删除操作更加方便
3设森林T中有4棵树,第一、二、三、四棵树的结点个数分别是n1,
n2,n3和n4,那么当把森林T转换成一棵二叉树后,其根结点的右子树 上有 ③ 个结点。
应将两栈的 ⑨ 分别设在这片内存空间的两端,这样,只有当 ⑩
时,才产生上溢。
A) 栈底 B)栈顶 C) 两个栈的栈顶同时到达栈空间的中心点 D)两个栈的栈顶在栈空间的某一点相遇
三、是非题(共10分)在下面的说法中,正确的打(√),错误的打 (×)
题①②③④⑤⑥⑦⑧⑨⑩小


选 择
① 在二叉树的先序序列中,若结点u在结点v之前,则u一定是v的祖
3.(6分)请编写算法求二叉树中度为1的结点的个数。 typedef struct tnode {datatype data; struct tnode *lc, *rc; }btnode, *bitreptr;
5 设rear是指向非空带头结点的循环链表的尾指针,则删除首元结点的
操作为 ⑤ 。
A) s=rear; rear=rear→next; free(s)
B) rear=rear→ext; free(rear)
C) rear=rear→next→next; free(rear)
D) s=rear→next→next; rear→next→next=s→next; free(s)
A) n1-1 B) n1 C) n1+n2+n3 D) n2+n3+n4
4下面关于线性表的叙述错误的是 ④ 。
A) 线性表采用顺序存储,必须占用一片地址连续的单元;
B) 线性表采用顺序存储,便于进行插入和删除操作;
C) 线性表采用链式存储,不必占用一片地址连续的单元;
D) 线性表采用链式存储,不便于进行插入和删除操作;
构。
4已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是
EBCDAFHIGJ, 试画出这棵二叉树。
五、算法填空题(共10分)
1下面是一个将关键字值插入到二叉排序树中的算法,请在划线处填上
正确的语句。
typedef struct pnode
{ int key;
struct node *left, *right;
else ④ ;
}
2在单链表中的p所指结点之前插入一个s所指结点时,可按下述步骤进 行:
s→next= ⑤ ; p→next=s; temp=p→data; p→data= ⑥ ; s→data= ⑦ ;
六、算法题:(共20分) 1.(7分)请写一算法,从顺序表中删除具有最小值的元素并由函数返
回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显 示出错信息并退出运行。
华东理工大学继续教育学院 《数据结构》期中试卷(闭卷)
班级 学号
姓名 成绩
Leabharlann Baidu
一 填空题(共20分,每空2分)





⑤小


解 答







解 答
1设r指向单链表的某一个结点,要在该结点之后插入数据元素x,需执 行的语句是
s=malloc(size); s->data=x; ① ; r->next=s。 2 一棵含有n个结点的二叉树,它的最小深度为 ② 。 3 树有三种常用的存储结构,即孩子链表法,双亲表示法和 ③ 。 4 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3 的结点,则该树中有 ④ 个叶子结点。 5 将一棵有100个结点的完全二叉树按层编号,则编号为49的结点的双 亲编号为 ⑤ 。 6 设s[maxsize]为一个顺序存储的栈,变量top指向栈顶位置,栈为满的 条件是 ⑥ , 7 一棵哈夫曼树T,其叶子结点的权分别为3,16,7,4,11,这棵哈夫 曼树的带权路径长度为 ⑦ 。 8 若一棵二叉树的叶子数为n,则该二叉树中,左、右子树皆非空的结 点个数为 ⑧ 。 9 用 ⑨ 链表存储线性表,可以从表中任一结点出发都能访问到所有
先。
② 在线性表的顺序存储结构中,进行插入和删除运算时,移动元素的
个数与该元素在线性表中的位置有关。
③ 顺序存储结构只能用于存储线性结构,而不能存储非线性数据结
构。
④ 在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上
并不一定相邻。
⑤ 一棵二叉树中第i层上最大的结点个数为2i-1个。
⑥ 二叉树是树的特殊形式。
⑦ 队列是一个具有后进先出性质的线性数据结构。
⑧ 串的数据元素类型只能是字符。
⑨ 若一棵二叉树的先序和后序遍历序列正好相反,则该二叉树一定只
有一个结点。
⑩ 顺序表的存储密度一定比链表的存储密度大。
四、应用题(共20分,每小题5分)
1 设用于通讯的电文仅由7个字母组成,字母在电文中出现的频率分别
为3,12,9,6,17,21,32。
相关文档
最新文档