数据结构习题集和答案(2007-6-11)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论
1、填空题
1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。
2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。
3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。
2、应用题
1、给出以下算法的时间复杂度.
void fun(int n)
{
int i=1,k=100;
while(i<n)
{
k=k+1;
i=i+2;
}
}
时间复杂度为____O(n)_____。
2、给出以下算法的时间复杂度.
void fun2(int n)
{
int i=1,k=100;
while(i<n)
{
i=i*10;
k=k+1;
}
}
时间复杂度为____O(log n)___________。
第2章线性表
1、填空题
1. 线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___链___表。
2.顺序表采用__随机___访问机制对数据元素进行访问。
3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:
①____s->next=p->next_____________;
②____p->next=s___________________;
4.在单向链表中,若要删除某个结点p,一般要找到__p的前趋__结点,才能实现该操作。
2、选择题
1.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数
是A。
(A)n (B)2n-1 (C)2n (D)n-1
2.在单链表中,如果在结点p之后插入一个新结点s,其操作为 A 。
(A)s->next=p->next; p->next=s;
(B)p->next=s; s->next=p->next;
(C)s->next=p; p->next=s->next;
(D)p->next=s; s->next=p;
3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为( C )。
(1≤i≤n)
A.O(0) B.O(1) C.O(n) D.O(n2)
4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为( B )。
(1≤i≤n+1)
A.n-i B.n-i+1 C. i D.n-i-1
3、判断题
1.线性表中每一个元素都有一个前驱和一个后继。
(×)
4、程序设计题
1、单链表的结点结构定义如下:
struct LinkNode
{
LinkNode *next;
int data;
};
请根据述函数的功能写程序。
void Insert(LinkNode *h,LinkNode *s)
{//h指向链表的头结点(即使链表中没有元素,头结点也存在。
)
//链表中元素已经递增有序
//函数功能为将结点s插入到链表h中。
插入后链表仍然保持递增的顺序LinkNode *p,*q;//q指向p的前驱
q=h;
p=h->next;
while(p)
{
if(p->data>s->data)
{//寻找到插入点位置,插入s
q->next=s;
s->next=p;
return;
}
else
{
q=p; (1分)
p=p->next; (1分)
}
}
//当表中没有比s大的结点时,插入到表尾
s->next=q->next; (2分)
q->next=s; (2分)
}
2、设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L 仍是一个有序表。
顺序表的结构定义如下:
#define ListSize 100 // 假定表空间大小为100
struct SqList {
int elem[ListSize]; // 数组elem用于存放表中的数据
int length; // 当前的表长度
};
//以上为顺序表的结构
//函数头定义如下
void InsertIncreaseList( SqList &L ,int x )
{ int i;
if ( L.length>=ListSize) cout<<”OVERFLOW”;//判断是否溢出for ( i=L.length ; i>0 && L.elem[ i-1 ] > x ; i--)
L.elem[ i ]=L.elem[ i-1 ] ; // 比较并移动元素
L.elem[ i ] =x; //插入x
L.length++; //表长增1
}
///////
3、单链表中结点的结构如下所示:
typedef struct node
{ int data;
struct node *next;
}node;
请设计满足下述功能的函数。
要求:建立带头结点的单链表H,要求函数从屏幕上读入m个整数,每读入一个,便生成相应的结点,并且把它插入到链表H的尾部。
函数形式为void CreateLinkList(node *H)。
参考程序:
void CreateList(node *H)
{//H指向头指针
int m,temp;
cout<<"输入数据的个数:";
cin>>m;//
int i=1;
node *tail;
H->next=NULL;
tail=H;
while(i<=m)
{
cout<<"please input your number:"<<endl;
cin>>temp;
node *t=new node ;
t->data=temp;
t->next=tail->next;
tail->next=t;
tail=t;
i++;
}
第3章栈和队列
1、填空题
1.栈和队列在本质上都是___线性表__________。
2.栈的操作特点是__后进先出_。
队列的操作特点是_先进先出__。
2、选择题
1.消除递归不一定需要使用栈,此说法___A____。
A. 正确
B. 错误
2.对于栈,输入序列为(1,2,3,4),不可能得到的输出序列有__D_____。
(A)(1,2,3,4)(B)(4,3,2,1)
(C)(1,3,4,2)(D)(3,1,2,4)
3.用单循环链表表示队列,正确的说法是B。
(A)可设一个头指针使入队、出队都方便;
(B)可设一个尾指针使入队、出队都方便;
(C)必须设头尾指针才能使入队、出队都方便;
(D)无论如何,只可能使入队方便。
3、判断题
1.栈的特点是先进先出。
(×)
2.可以在队列的任意位置插入元素。
(×)
3.递归程序化非递归程序必须用到栈。
(×)
4.如果进栈的序列为(1,2,3,4),则(4,2,3,1)不可能是出栈序列。
(√)
5.在用顺序表表示的循环队列中,可用标志位来区分队空或队满的条件。
(√)
第4章串
1、选择题
1. 设有两个串p和q,求q在p中首次出现的位置的运算称作(B)
A.连接 B.模式匹配 C.求子串 D.求串长
2、判断题
1.空串和空格串是同一个概念,二者没有区别。
(×)
第5章数组和广义表
1、填空题
1.二维数组在内存中存储可以有两种存储方式,一种是___行__优先存储,
一种是列优先存储。
2.设广义表L=((),(),(()))。
则head(L)是();
tail(L)是((),(())) ;L的长度是3;L的深度是
3 。
3.设广义表L=((a),(b),((c))) 则head(L)是__(a)__;
tail(L)是_((b),((c)))___。
2、选择题
1.在C语言中,如果有数组定义 int A[8][9];假定每个整型数据占2字节,则数组元素A[4][4]的地址是(A)。
A. A+80
B. A+76
C.A+82
D.以上都不对
2.广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为( D );
Head(Tail(Head(Tail(Tail(A)))))
A.(g) B.(d) C.c D.d
3、判断题
1.在C语言中,多维数组的存储采取的是行优先的方式。
(√)
2.广义表在本质上也是线性表。
(×)
3.可以用三元组存储法来压缩存储稀疏矩阵。
(√)
4.已知广义表A=((a,b,c),(d,e,f)),从A中取出原子e的运算是head(tail(head(tail(A))))。
( √ )
第6章树和二叉树
1、填空题
1.一棵62个叶结点的完全二叉树,最多有___62*2=124______个结点。
2.若规定仅有根的二叉树的高度为1,那么高为h的完全二叉树最多有-
____2^h-1___________个结点,最少有___2^(h-1)______个结点。
3.设只包含有根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为____2^(k+1)-1____________,最小结点数为____k+1____________。
4.设仅包含根结点的二叉树的高度为1,则高度为k的二叉树的最大结点数为_______2^k-1_________,最小结点数为____k______。
2、选择题
1.具有N个结点的完全二叉树的深度是__B______。
(A)⌊ log
2N ⌋(B)⌊ log
2
N ⌋+1
(C)⌊ log
2(N) ⌋(D)⌊ log
2
N ⌋-1
2.设二叉树的树根为第一层,则第i层上至多有__C_____结点。
(A)1 (B)2 (C)2i-1 (D)2i-1
3、判断题
1.二叉树的左右子树次序是严格的,不能够任意改变。
(√)
2.若根为第一层,则深度为k的满二叉树的结点为2^k-1 。
(√)
3.二叉树的三叉链表存储结构可以方便的访问到双亲结点。
(√)
4、应用题
1.在一段文字中,共出现a、b、c、d、e、f六种字符,每种字符出现的频率分别为7,9,12,22,23,27。
请回答下列问题:
(1)什么是哈夫曼树?(3分)
(2)根据题目所给频率值,画出相应的哈夫曼树。
(11分)
(3)给出各个字符对应的哈夫曼编码。
(6分)
(4)该段文字经过哈夫曼编码后,长度是多少。
(4分)
参考答案如下:
(1)答案为:带权路径长度最小的二叉树称为哈夫曼树。
(3分)
(2)根据题目所给频率值,画出相应的哈夫曼树。
(11分,每个结点1分)
a b
(3)给出各个字符对应的哈夫曼编码。
(6分)
a:1110 b:1111 c:110 d:00 e:01 f:10
(4)该段文字经过哈夫曼编码后,长度是多少。
(4分)
(7+9)*4+12*3+(22+23+27)*2=244
或者100+45+55+28+16=244
2. 设一棵二叉树的先序遍历序列为abcde,中序遍历序列为badce,请画出对应的二叉树,并写出对应后序遍历序列。
(15分)
参考答案如下:
(1)画出二叉树(10分)
错一个结点扣2分。
(2)后序遍历序列为:bdeca (5分)
3.通信报文中出现的字符A、B、C、D、E,在报文中出现的频率分别为
0.23、0.2、0.32、0.12、0.13,分别给出相应字符的哈夫曼编码(要
求画出哈夫曼树,并且把权值小的结点放在左边)。
(共14分)参考答案如下:
为处理方便,关键字都乘以100,为{23,20,32,12,13}
构造哈夫曼树为:(9分,每个结点1分)
所以编码为:A:01 B:00 C:11 D:100 E:101 (5分,每个编码1分)
4.某二叉树结点的中序序列为H,B,C,D,E,F,G,后序序列为B,D,
C,H,F,G,E,请据此画出该二叉树,再给该树加上中序线索。
(共
15分)
对应的二叉树为:(7分,每个结点1分)
对应中序线索树为:(8分,每条线索1分)
5.请证明对于任何一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
(10分)
证明:令树中结点总数为N,度为1的结点个数为n1。
则树中结点数满足下列公式:n0+n1+n2=N
从度的角度来考虑,满足下列公式:2n2+n1+1=N
从而得证:n0=n2+1
6.请按照孩子-兄弟表示法,将图1所示树转化为二叉树。
(共14分)
解:
(每个结点2分)
7.设二叉树如图2所示。
分别写出它的先序遍历、中序遍历、后序遍历序列。
(共15分)
8.
(1)写出如图所示二叉树的中序遍历结果。
(8分) (2)画出二叉树的中序后继线索。
(10分)
(1)中序遍历结果:ADBCHFEG ——共8分,每个字符1分 (2)二叉树的中序后继线索如图
——共10分,每个后继线索2分
图2
9.
已知某二叉树的前序遍历序列为:A B C D E F G和中序遍历序列为:C B E D A F G。
请画出该二叉树。
答案如下:
10.
已知通信联络中只可能出现A、B、C、D、E、F、G、H共8种字符,其出现次数分别为5,28,7,9,14,23,3,11次。
(1)请画出赫夫曼树(权值小的结点在左边)。
(15分)
(2)计算该树的带权路径长度。
(3分)
答案:
(1)赫夫曼树构造如下。
树中结点位置正确者,每个1分,共15分。
(2)该树的带权路径长度为
(5+3+7+8)*4+(11+14)*3+(23+29)*2=271
————3分
5、读程序写结果
已知二叉树的结点结构如下:Array struct Node
{
int data;
Node *lchild,*rchild;
};
某棵二叉树的形态如右图:
根据要求解答下题:
1、 (共5分)
int fun1(Node *root)
{
if(root==0) return 0;
int l,r;
l=fun1(root->lchild);
r=fun1(root->rchild);
if(l>=r) return l+1;
else return r+1;
}
(1)当root是指向结点A的指针时,函数fun1的返回值是多少?(2分)
函数fun1的返回值是3。
(2)函数fun1的功能是什么?(3分)
函数fun1的功能是求二叉树的高度。
2、 (共6分)
int fun2(Node *root)
{
if(root==0) return 0;
int l=fun2(root->lchild );
int r=fun2(root->rchild );
return l+r+1;
}
(1)当root是指向结点A的指针时,函数fun1的返回值是多少?(2分) 函数fun1的返回值是5。
(2)函数fun1的功能是什么?(4分)
函数fun1的功能是求二叉树中所有结点的个数
第7章图
1、填空题
1. 有n个顶点的有向连通图最多有条边,最少有条边。
2.具有n个顶点的完全无向图有________条边,完全有向图有________条边。
2、选择题
1. __________方法可以判断出一个有向图中是否有环(回路)。
(A)深度优先遍历 (B)拓扑排序
(C)求最短路径 (D)求关键路径
2.关键路径是指__________。
(A)从开始事件到终止事件路径长度最短的路径
(B)从开始事件到终止事件路径长度最长的路径
(C)从开始事件到终止事件活动最少的路径
(D)从开始事件到终止事件活动最多的路径
5.方法可以判断出一个有向图中是否有环(回路)。
(A)深度优先遍历 (B)拓扑排序
(C)求最短路径 (D)求关键路径
3、判断题
1.具有n个顶点的有向图最多有n*(n-1)条边。
()
2.在AOV-网中,不应该出现有向环,因为存在环就意味着活动可以以自己为先决条件。
()
4、应用题
1、已知某图的存储结构如下,试写出该图从顶点A开始的深度优先遍历序列。
(11分)
A
B
C
D
E
F
G
H
I J K
答案为:ABGCHDIEJFK (对一个1分)
2. 请给出图1的所有最小生成树。
(10分)
共两棵。
第一棵为:(5分)错一条边扣1分。
第二棵为:(5分)错一条边扣1分。
图1
3. 请给出图2的所有拓扑排序序列。
(16)
答案如下:仅有两个
第一个:abcdefgh (错一个字符扣1分)
第二个:abcdegfh (错一个字符扣1分)
4、对于有向无环图(如图2),写出它的所有不同的拓扑有序序列。
(共16分)
图2
序列为:1、3、2、4、5、6、7、8
6. 已知某图采取如图2所示的邻接矩阵表示法,请回答下列问题。
(共12分)
1 2 3 4 5 6
(1) 请画出该图。
(6分)
(2)对其从顶点A开始进行深度优先遍历,写出遍历序列。
(6分)
(1)请画出该图。
(6分)错一个结点扣1分。
(2)对其从顶点A开始进行深度优先遍历,写出遍历序列。
(6分, 错一个字符扣1分)
序列为:ABDECF
7、(本题总计 7 分)
构造该图的最小生成树。
图的最小生成树如下——每条边1分,共7分
5、程序设计题
第8章动态存储管理
1、填空题
2、选择题
3、判断题
4、应用题
5、程序设计题
第9章查找
1、选择题
1.若在线性表中采用二分查找法查找元素,该线性表应该( )。
A.元素按值有序 B.采用顺序存储结构
C.元素按值有序,且采用顺序存储结构
D.元素按值有序,且采用链式存储结构
2.对二叉排序树进行_________遍历,可以得到该二叉树所有结点构成的有
序序列。
(A) 前序(B)中序(C)后序(D)按层次
3.利用逐点插入法建立序列(51,71,43,81,74,20,34,45,64,30)对应的二叉排序树以后,查找元素34要进行( )元素间的比较。
A.4次 B.5次 C. 7次 D.10
4.对二叉排序树进行____________遍历,可以得到该二叉树所有结点构成的有序序列。
(A) 前序(B)中序(C)后序(D)按层次
5.散列函数有一个共同性质,即函数值应按( )取其值域的每一个值。
A.最大概率
B.最小概率
C.同等概率
D.平均概率
6.一个哈希函数被认为是“好的”,如果它满足条件_________。
(A)哈希地址分布均匀
(B)保证不产生冲突
(C)所有哈希地址在表长范围内
(D)满足(B)和(C)
7.哈希表的平均查找长度是__________的函数。
(A)哈希表的长度(B)表中元素的多少
(C)哈希函数(D)哈希表的装满程度
8.平均查找长度最短的查找方法是____________。
(A)折半查找(B)顺序查找(C)哈希查找(4)其他
2、判断题
1.在有序表的查询过程中,设立“哨兵”的作用是为了提高效率。
()
2.对于折半查找,其前提条件是待查找序列只要是有序的即可。
()
3、应用题
1.
输入一个正整数序列(53,17,12,66,58,70,87,25,56,60),试完成下列各题。
(1)按输入次序构造一棵二叉排序树(只要求画出最终二叉排序树)。
(2)依此二叉排序树,如何得到一个从小到大的有序序列?
2、若一棵排序二叉树的关键字输入序列为{80,6,10,7,8,25,100,90},请画出该二叉树。
解:二叉排序树为:(16分,每个结点2分)
3.
已知一组关键字为{1,14,27,29,55,68,10,11,23},则按哈希函数H(key)=key MOD 13和链地址法处理冲突来构造哈希表。
(1)画出所构造的哈希表。
(2)在记录的查找概率相等的前提下,计算该表查找成功时的平均查找长度。
1分
1
2
3
4
5
6
7
8
9
(2)在记录的查找概率相等的前提下,该表查找成功时的平均查找长度,ASL=(1×4+2×3+3×2)/9=16/9 —— 2分
4、程序设计题
1.二叉排序树的结点结构如下所示:
typedef struct node
{ int data;
struct node *lchild,*rchild;
}node;
请编写在二叉排序树T中查找值为x的结点的非递归算法,如果查到,返回指向该结点的指针,否则返回空。
函数形式为:
node* Search(node *T, int x)。
(10分)
///////////////
2.已知整型数组A,从第一个单元(即A[1])开始存储数据,且一共存储了n个元素。
要求编写折半查找元素e的过程。
当数组中存在元素e时,返回其下标,否则返回0。
(10分)
int BinarySearch(int *A,int n,int e)
//////////////
参考程序如下:
int BinarySearch(int *A,int n,int e)
{
int low,high,mid;
low=1;high=n; (1分)
while(1)
{
mid=(low+high)/2; (2分)
if(A[mid]==e) (1分)
{ return mid;} (1分)
else if(A[mid]>e) (1分)
{
high=mid-1; (1分)
}
else
{ low=mid+1;} (1分)
if(low>high) (2分)
return 0;
}
}
3.已知整型数组A[101],其中从A[1]到A[100]存储了100个整数,试编写函数int Find(int A[101],int x),功能为从数组A中折半查找元素x,如果找到则返回x所对应的下标,否则的话返回0。
第10章内部排序
1、填空题
1.快速排序和堆排序的平均时间复杂度分别为________和________。
2、选择题
1.下面给出的四种排序法中( )排序法是不稳定性排序法。
A.插入 B.冒泡 C.二路归并 D.堆排序
2.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比
较,然后将其放在已排序序列的合适位置,该排序方法称为排序法。
(A)插入(B)选择(C)希尔(D)二路归并
3.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比
较,然后将其放在已排序序列的合适位置,该排序方法称为______排序法。
(A)插入(B)选择(C)谢尔(D)二路归并
3、判断题
1.从平均性能而言,快速排序最佳,其所需时间最省。
()
4、应用题
1. 对于关键字序列{49,38,65,97,76,13},回答下述问题。
(共12分)
(1)写出一趟冒泡排序的结果。
(6分)
(2)写出一趟快速排序的结果。
(6分)
参考答案如下:
(1)写出一趟冒泡排序的结果。
(6分)
{38,49,65,76,13,97}
(2)写出一趟快速排序的结果。
(6分)
{13,38,49,97,76,65}
第11章外部排序
第12章文件
数据结构自测题(前五章)
一、填空题
1. 数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的
和运算等的学科。
2. 数据结构被形式地定义为(D, S),其中D是
的有限集合,S是D上的有限集合。
3. 数据结构按逻辑结构可分为两大类,它们分别是
和。
4. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
5.在线性结构中,第一个结点前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点
后续结点,其余每个结点有且只有1个后续结点。
6. 一个算法的效率可分为效率和
效率。
7. 线性表中结点的个数是的,结点间的关系是的。
8. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。
9. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。
10. 在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为
的数据结构。
11. 顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置相邻。
12. 在单链表中,除了首元结点外,任一结点的存储位置由
指示。
13.在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为。
14. 线性表、栈和队列都是结构,可以在线性表的位置插入和删除元素;
对于栈只能在
插入和删除元素;对于队列只能在
插入和删除元素。
15. 在具有n个单元的循环队列中,队满时共有
个元素。
16. 称为空串;
称为空白串。
17. 设S=“A;/document/Mary.doc”,则strlen(s)= , “/”的字符定位的位置为。
18. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为;末尾元素A57的第一个字节地址为。
二、判断正误
()1. 链表的每个结点中都恰好包含一个指针。
()2. 链表的物理存储结构具有同链表一样的顺序。
()3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
()4. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
()5. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
()6. 线性表在物理存储空间中也一定是连续的。
()7. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
()8. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
()9. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。
()10. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。
三、单项选择题
()1. 数据结构中,与所使用的计算机无关的是数据的结构;
A) 存储 B) 物理 C) 逻辑 D) 物理和存储
()2. 算法分析的目的是:
A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系
C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性
()3. 算法分析的两个主要方面是:
A) 空间复杂性和时间复杂性 B) 正确性和简明性
C) 可读性和文档性 D) 数据复杂性和程序复杂性
()4. 计算机算法指的是:
A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法
()5. 计算机算法必须具备输入、输出和
等5个特性。
A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性
C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性
()6.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:
(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构
()7. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是
(A)110 (B)108 (C)100 (D)120
()8. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素
(A)8 (B)63.5 (C)63 (D)7
()9. 链接存储的存储结构所占存储空间:
(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
(B)只有一部分,存放结点值
(C)只有一部分,存储表示结点间关系的指针
(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
(C)一定是不连续的(D)连续或不连续都可以
()10.线性表L在情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值(B)需不断对L进行删除插入
(C)L中含有大量的结点(D)L中结点结构复杂
()11. 栈中元素的进出原则是
A.先进先出B.后进先出C.栈空则进D.栈满则出()12. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为
A.i B.n-i C.n-i+1 D.不确定
四、简答题
1. 试比较顺序存储结构和链式存储结构的优缺点。
分别在什么情况下用二者更适合?
2. 顺序队的“假溢出”是怎样产生的?如何知道循环队列是空还是满?
3. 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
① front=11,rear=19; ② front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?。