数据结构复习题1和答案汇总Word文档格式.docx
- 文档编号:13715576
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:33
- 大小:208.48KB
数据结构复习题1和答案汇总Word文档格式.docx
《数据结构复习题1和答案汇总Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构复习题1和答案汇总Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
for(j=0;
m;
※6、分析以下各程序段的时间复杂度为(用大O记号表示)
(1)i=s=0;
while(s<
n)
{i++;
s+=i;
}
(2)i=1;
while(i<
=n)
i=i*3;
第2章线性表
1、n(n>
=0)个元素的线性结构表示成(a1,a2,……an),a1称为______元素,an称为______元素,i称为ai在线性表中的____________。
对任意一对相邻结点ai、ai+1(1<
=i<
n),ai称为ai+1的______,ai+1称为ai的______。
2、在表长为n的顺序表的第i个位置插入一元素(1<
=n+1,插入的新元素作为第i个元素),则涉及到的元素的移动次数为;
若删除第i(1<
=n)个元素,则涉及到的元素的移动次数为。
※3、线性表的顺序存储结构(顺序表)其存储空间。
A)必须是连续的B)部分是连续的
C)一定是不连续的D)连续不连续都可以
4、一个顺序表的第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是。
A)110B)108C)100D)120
5、顺序表的存取特点为,单链表的存取特点为。
6、对于顺序表的优缺点,以下说法错误的是()
①无需为表示结点间的逻辑关系而增加额外的存储空间
②可以方便地随机存取表中的任一结点
③插人和删除运算较方便
④容易造成一部分空间长期闲置而得不到充分利用
7、以下说法正确的是
①线性结构的基本特征是:
每个结点有且仅有一个直接前趋和一个直接后继
②线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要低
③在顺序存储线性表中,插入和删除元素时,移动元素的个数与插入或删除位置有关
④顺序存储的线性表的插人和删除操作不需要付出很大的代价,因为平均每次操只有近一半的元素需要移动
8、以下说法正确的是()
①顺序存储方式的优点是存储密度大、且插入、删除运算效率高
②链表的每个结点中都恰好包含一个指针
③线性表的顺序存储结构优于链式存储结构
④顺序存储结构属于静态结构,链式结构属于动态结构
※9、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
①顺序表②单链表③双链表④单循环链表
10、单链表中,增加头结点的目的是为了()
①使单链表至少有一个结点
②标示表结点中首结点的位置
③使每个元素都能有前驱结点,从而方便运算的实现
④说明单链表是线性表的链式存储实现
※11、对于一单链表L(L为头指针,且结点的后继指针分量为next),其p结点(p为链表中某结点的指针)既不是第一个结点,也不是最后一个结点。
(1)在p结点后插入s结点(s为某结点的指针)的语句序列是:
【1】
(2)删除p结点的直接后继结点的语句序列是:
q=p->
next;
【2】;
free(q);
(3)若L为带头结点的单链表,则:
a)在表首插入s结点的语句序列是:
【3】
b)单链表为空的判定条件为:
【4】
(4)若L为不带头结点的单链表,则:
【5】
【6】
※12、已知L是带表头结点的双向链表(L为头指针,且结点的后继指针分量为next,前驱指针为pre),其p结点(p为链表中某结点的指针)既不是首元结点,也不是尾元结点。
a)在p结点后插入s结点(s为某结点的指针)的语句序列是:
s->
next=p->
next;
pre=【1】;
【2】=s;
p->
next=s;
b)在p结点前插入s结点(s为某结点的指针)的语句序列是:
pre=p->
pre;
next=【3】;
【4】=s;
pre=s;
c)删除p结点的直接后继结点的语句序列是:
next=【5】;
【6】=p;
d)删除p结点的直接前驱结点的语句序列是:
q=p>
【7】;
【8】=p;
e)删除该p结点语句序列是:
【9】=p->
next->
pre=【10】;
free(p);
f)在表首插入s结点的语句序列是:
next=L->
【11】=L;
【12】;
L->
13、设带头结点的单链表类型定义如下:
typedefstructLNode
{Elemtypedata;
//Elemtype为数据元素类型
structLnode*next;
//后继结点的指针
}*LinkedList;
(1)函数InverseList(L)的作用是将一带头结点的单链表实现就地逆置的算法(即利用原来链表的空间,将单链表中的结点按原来相反的顺序存储)。
填写空缺位置,使此该算法完整。
InverseList(LinkedList&
L)
{p=L->
next=NULL;
while(p)
{q=p->
【1】;
【2】;
p=q;
}
(2)MergeList(La,Lb)函数的作用是将两个递增有序的带头结点的单链表La,Lb,利用原来的结点空间,合并成一个递增有序的链表La。
voidMergeList(LinkedList&
La,LinkedList&
Lb)
{pa=La->
pb=Lb->
s=La;
while(【3】)
{if(pa->
data<
=pb->
data)
{s->
next=pa;
s=pa;
pa=pa->
else{s->
next=pb;
s=pb;
【4】;
if(pa)s->
elses->
free(Lb);
(3)函数Search(L,i)用来返回带头结点的单链表L的第i个元素的位置指针。
LinkedListSearch(LinkedListL,inti)
{p=L;
j=【6】;
while(【7】){p=p->
j++;
if(【8】)returnp;
elsereturnNULL;
※(4)函数ListLength(L)用来求一带头结点的单链表L的长度。
请写出此函数的算法代码。
14、函数DeleteElem(inta[],intn,inti)的作用为:
在一个长度为n的数组中,删除其第i个元素。
其中第数组的第一个元素为a[0],第二个元素为a[1],依次类推。
第3章栈与队列
1、栈与队列是二种特殊的线性表,栈其亦称为;
队列亦称为。
2、现有一个空栈,现有4个元素其入栈顺序为a、b、c、d,则不可能得到了出栈顺序为。
A)a,b,c,dB)d,c,b,aC)c,a,b,dD)a,c,b,d
3、现有一个空栈,已知其入栈序列为1,2,3,…,n,其输出序列为p1,p2,p3,…,pn。
若p1=n,则pi(1≤i≤n)为
A)iB)n-iC)n-i+1D)不确定
4、栈与队列的共同点是。
A)都是先进后出B)都是先进先出
C)只允许在端点处插入和删除元素D)没有共同点
5、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出线的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是()
①2②3③5④6
6、设有一顺序栈已含3个元素(当前栈顶元素为a3),如下图所示,元素a4正等待进栈。
那么下列4个序列中不可能出现的出栈序列是()
0123maxsize-1
a1
a2
a3
sq
①a3,a1,a4,a2②a3,a2,a4,a1③a3,a4,a2,a1④a4,a3,a2,a1
7、一个队列的入列序是1,2,3,4,则队列的输出系列是()
①4,3,2,1②1,2,3,4,③1,4,3,2④3,2,4,1
8、向一个栈顶指针为Top(Top指向栈顶元素)的链中插入一个s所指结点时,其操作步骤为()
①Top->
next=s②s->
next=Top->
Top->
next=s
③s->
next=Top;
Top=s④s->
Top=Top->
next
9、在一个栈顶指针为Top(Top指向栈顶元素)的链栈中,进行出栈操作,并将被出栈元素的值保存到x中,其操作步骤为()
①p=Top;
x=Top->
data;
②p=Top;
free(p);
③x=Top;
free(Top);
④x=Top->
free(Top);
10、对于顺序存储的栈,其类型描述如下:
typedefstruct
{ElemTypeElem[MAX];
/*ElemType为栈内元素类型,MAX为一预定义常量,数组Elem的首端为栈底,另一端为栈顶*/
intTop;
/*Top指示栈顶位置,其值为下标值*/
}SqStack;
若Top指示的位置为当前栈顶元素的位置,则栈空的判定条件为:
;
若Top指示的位置为当前栈顶元素的下一位置(即入栈位置),则栈空的判定条件为:
;
11、阅读下列算法,写出其完整的功能。
#defineMAX100
{DataTypedata;
//DataType为数据元素类型
voidRVList(LinkedListhead)
{DataTypeS[MAX];
inttop=0;
LinkedListp;
p=head->
while
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题 答案 汇总