数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx

上传人:b****7 文档编号:21867748 上传时间:2023-02-01 格式:DOCX 页数:27 大小:39.74KB
下载 相关 举报
数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx_第1页
第1页 / 共27页
数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx_第2页
第2页 / 共27页
数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx_第3页
第3页 / 共27页
数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx_第4页
第4页 / 共27页
数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx

《数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

数据结构练习题 第三章 栈队列和数组 习题及答案讲解学习Word格式.docx

return

(1);

}

10.以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。

IntEmptyStack(SqStackTp*sq)

{if(________________)return

(1);

elsereturn(0);

11.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。

IntGetTop(SqStackTp*sq,DataType*x)

{if(________________)return(0);

12.以下运算实现在链栈上的初始化,请在________________处用请适当句子予以填充。

VoidInitStacl(LstackTp*ls){________________;

13.`以下运算实现在链栈上的进栈,请在处用请适当句子予以填充。

VoidPush(LStackTp*ls,DataTypex)

{LstackTp*p;

p=malloc(sizeof(LstackTp));

p->

next=ls;

14.以下运算实现在链栈上的退栈,请在________________处用请适当句子予以填充。

IntPop(LstackTp*ls,DataType*x)

{LstackTp*p;

if(ls!

=NULL)

{p=ls;

*x=________________;

ls=ls->

next;

return

(1);

}elsereturn(0);

15.以下运算实现在链栈上读栈顶元素,请在________________处用请适当句子予以填充。

IntGetTop(LstackTp*ls,DataType*x)

{if(ls!

=NULL){________________;

16.必须注意,递归定义不能是“循环定义”。

为此要求任何递归定义必须同时满足如下条件:

①被定义项在定义中的应用(即作为定义项的出现)具有________________;

②被定义项在最小“尺度”上的定义不是________________的。

17.队列简称________________。

在队列中,新插入的结点只能添加到________________,被删除的只能是排在________________的结点。

18.队列以线性表为逻辑结构,至少包括________________、________________、________________、________________________________、五种基本运算。

19.顺序队的出、入队操作会产生“________________”。

20.以下运算实现在循环队上的初始化,请在________________处用适当句子予以填充。

VoidInitCycQueue(CycqueueTp*sq)

{________________;

sq->

rear=0;

21.以下运算实现在循环队上的入队列,请在________________处用请适当句子予以填充。

IntEnCycQueue(CycquereTp*sq,DataTypex)

{if((sq->

rear+1)%maxsize==________________)

{error(“队满”);

else{________________;

________________________________;

22.以下运算实现在循环队上的出队列,请在________________处用适当句子予以填充。

IntOutCycQueue(CycquereTp*sq,DataType*x)

{if(sq->

front==________________){error(“队空”);

return(0);

23.以下运算实现在循环队上判队空,请在________________处用适当句子予以填充。

IntEmptyCycQueue(CycqueueTpsq)

24.以下运算实现在循环队上取队头,请在________________处用适当句子予以填充。

IntGetHead(CycqueueTpsq,DataType*x)

{if(sq.rear==________________return(0);

else{*x=sq.data[________________];

}

25.链队在一定范围内不会出现________________的情况。

当lq.front==lq.rear试,队中无元素,此时________________。

26.以下运算实现在链队上的初始化,请在________________处用适当句子予以填充。

voidInitQueue(QueptrTp*lp)

{LqueueTp*p;

p=(LqueueTp*)malloc(sizeof(LqueueTp));

________________;

lq->

rear=p;

(lq->

front)->

next=________________;

27.以下运算实现在链队上的入队列,请在________________处用适当句子予以填充。

VoidEnQueue(QueptrTp*lq,DataTypex)

{LqueueTp*p;

p=(LqueueTp*)malloc(sizeof(LqueueTp));

next=NULL;

rear)->

28.以下运算实现在链队上的出队列,请在________________处用适当句子予以填充。

intOutQueue(QuetrTp*lq,DataType*x)

{LqueueTp*s;

if(lq->

front==lq->

rear){erroe(“队空”);

else{s=(lq->

________________=s->

data;

next=________________;

if(s->

next==NULL)lq->

rear=lq->

front;

free(s);

29.以下运算实现在链队上判队空,请在________________处用适当句子予以填充

intEmptyQueue(QueptrTp*lq)

{if(________________)return

(1);

30.以下运算实现在链队上读队头元素,请在________________处用适当句子予以填充。

IntGetHead(QueptrTplq,DataType*x)

if(lq.rear==lq.front)return(0);

else{________________;

________________=p->

31.一般地,一个n维数组可视为其数据元素为___________维数组的线性表。

数组通常只有___________和___________两种基本运算。

32,通常采用___________存储结构来存放数组。

对二维数组可有两种存储方法:

一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。

C语言数组用的是以___________序为主序的存储方法;

FORTRAN语言用的是以___________序为主序的存储方法

33.需要压缩存储的矩阵可分为___________矩阵和___________矩阵两种。

34.对称方阵中有近半的元素重复,若为每一对元素只分配一个存储空间,则可将n2个元素压缩存储到___________个元素的存储空间中。

35.假设以一维数组M(1:

n(n+1)/2)作为n阶对称矩阵A的存储结构,以行序为主序存储其下三角(包括对角线)中的元素,数组M和矩阵A间对应的关系为___________。

36.上三角矩阵中,主对角线上的第t行(1<

=t<

=n)有___________个元素,按行优先顺序存放上三角矩阵中的元素aij时,aij之前的前i-1行共有___________个元素,在第i行上,aij是该行的第___________个元素,M[k]和aij的对应关系是。

当i>

j时,aij=c,c存放在M[___________]中。

37.下三角矩阵的存储和对称矩阵类似。

M[K]和aij的对应关系是___________。

38.基于三元组的稀疏矩阵转置的处理方法有两种,以下运算按照矩阵A的列序来进行转置,请在___________处用适当的句子用以填充。

Trans_Sparmat(SpMatrixTpa,SpMatrixTp*b)

{(*b).mu=a.nu;

(*b).nu=a.mu;

(*b).tu=a.tu;

if(a.tu)

{q=1;

for(col=1;

___________;

col++)

for(p=1;

p<

=a.tu;

p++)

if(___________==col)

{(*b).data[q].i=a.data[p].j;

(*b).data[q].j=a.data[p].i;

(*b).data[q].v=a.data[p].v;

39.基于三元组的稀疏矩阵转置的处理方法有两种,以下计算按照矩阵A的三元组a.data的次序进行转置,请在___________处用适当的句子用以填充。

Fast_Trans_Sparmat(SpMatrixTpa,SpMatrixTp*b)

(*b).tu=a.tu=a.tu;

{for(col=1;

___________;

col++)num[col]=0;

for(t=1;

t<

=a,tu;

t++)num[a.data[t].j]++;

cpot[1]=1;

for(col=2;

col<

=a.nu;

col++)cpot[col]=___________;

{col=a.data[p].j;

q=cpot[col];

(*b).data[q].i=a.data[p].j;

__________________________;

40.栈称为___________线性表。

;

41.队称为___________线性表。

42设一个链栈的栈顶指针为ls,栈中结点的格式为infonext,栈空的条件是___________;

如果栈不为空,则退栈操作为p=ls;

ls=ls->

free(p)。

43.设有二为数组intM[10][20](注:

m为0...10,n为0...20),每个元素(整数)栈两个存储单元,数组的起始地址为2000,元素M[5][10]的存储位置为___________,M[8][19]的存储值为___________。

44.在具有n个单元的循环队列中,队满时共有___________个元素。

45.___________可以作为实现递归函数调用的一种数据结构。

46.数组M中每个元素的长度是3个字节,行下标i从1到8,列下标j从1到0,从首的址EA开始连续存放在存储其中。

若按行方式存放,元素M[8][5]的起始地址为___________;

若按列优先方式存放,元素M[8][5]的地址为___________。

47.对带有头结点的列队列lq,判定队列中只有一个数据元素的条件是___________。

48.二维数组M的成员是6个字符(每个字符栈一个存储单元)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要___________个字节;

M的第8列和第5行共占___________个字节;

若M按行方式存储,元素M[8][5]的起始地址与当M按列优先方式存储时的___________元素的起始地址一致。

三、单项选择题

1.在以下栈的基本运算中,不是加工型运算的是()

①lnitStack(S)②Push(S,X)③Pop(S)④empty(S)

2.以下说法正确的是()

①因链栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况

②因顺序栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况

③对于链栈而言,在栈满状态下,如果此时再作进栈运算,则会发生“上溢”

④对于顺序栈而言在栈满状态下如果此时再作迸栈运算,则会发生“下溢”。

3.在以下队列的基本运算中,不是加工型运算的是()

①InitQueue(Q)②EnQueue(Q,X)③OutQueu(Q,X)④GetHead(Q,x)

4.顺序队列的人队操作应为()

①sq.rear=sq.rear+1sq.data[sq.rear]=x

②sq.data[sq.rear]=xsq.rear=sq.rear+1

③sq.rear=(sq.rear+1)%maxsize;

sq.data[sq.rear]=x

④sq.data[sqrear]=xsq.rear=(sq.rear+1)%maxsize

5.循环队列的人队操作应为()

③sq.rear=(sq.rear+1)%maxsizesq.data[sq.rear]=x

④sq.data[sq.rear]=xsq.rear=(sq.rear+1)%maxsize

6.顺序队列的出队操作为()

①sq.front=(sq.front+1)%maxsize

②sq.front=sq.front+1

③sq.rear=(sq.rear+1)%maxsize

④sq.rear=sq.rear+1

7.循环队列的出队操作为()

①sq.front=(sq.ftont+1)%maxsize

③sq.rear=(sq.rear+)%maxsize

④sq.rear=sq.rear+1

8.循环队列的队满条件为()

①(sq.rear+1)%mazsize==(sq.front+1)%maxsize;

②(sq.rear+1%maxsize==sq.front+1

③sq.(rear+1)%maxsize==sq.front

④sq.rear==sq.front

9.循环队列的队空条件为()

①(sq.rear+1)%maxsize==(sq.front+1)%maxsize

②(sq.rear+)%maxsize==sq.front+1

③(sp.rear+1)%maxsize==sq.front

④sq.rear==sq.front

10.数组的数据元素类型DataType可根据实际需要而定义。

以下说法完全正确的是()

①数组的读运算可以读取一个数据元素整体,写运算只能修改一个数据元素的一部分

②数组的读、写运算可以读取或修改一个数据元素的一部分或一个整体

③数组的读、写运算只能读取或修改一个数据元素的一部分

④数组的读、写运算只能读取或修改一个数据元素整体

11.对于以行序为主序的存储结构来说,在数组A[c1·

·

d1,c2·

d2]中,c1和d1分别为

数组A的第一个下标的上、下界,c2…d2分别为第二各下标的上、下界,每个数据元素占K

个存储单元,二维数组中任一元素a[i,j]的存储位置可由()式确定.

①Loc[i,j]=[(d2-c2+1)(i-c1)+(j-c2)]*k

②Loc[i,j]=loc[c1,c2]+[(d2-c2+1)(i-c1)+(j-c2)]*k

③Loc{i,j}=A[c1,c2]+[(d2-c2+1)(i-c1)+(j-c2)]*k

④Loc[i,j]=loc[0,0]+[(d2-c2+1)(i-c1)=(j-c2)]*k

12对于C语言的二维数组DataTypeA[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j]的存储位置可由()式确定.

①Loc[i,j]=A[m,n]+[(n+1)*i+j]*k

②Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k

③Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k

④Loc[i,j]=[(n+1)*i+j]*k

13.线性表的顺序存储结构是一种()的存储结构,线性表的链式存储结构是一种()的存储结构。

①随机存取②顺序存储

14.如果以链表作为栈的存储结构,则退栈操作是()

①必须判别栈是否满②必须判别栈是否空

③判别栈元素的类型④对栈不做任何操作

15对于基于三元组的稀疏矩阵转置的处埋方法以下说法正确的是()

①按照矩阵A的列序来进行转置,算法的时间复杂度为0(nu+tu)

②按照A的三元组a.data的次序进行转置,算法的时间复杂度为O(nu*tu)

③按照矩阵A的列序来进行转置的方法称快速转置

④按照矩阵A的列序进行转置,对于tu<

<

muxnu才有意义。

16.稀疏矩阵的压缩存储方法是只存储()

①非零元素②三元祖(i,j,aij)③aij④i,j

17.基于三元组的稀疏矩阵,对每个非零元素aij,可以用一个()唯一确定。

①非零元素②三元组(i,j,aij)③aij④i,j

18如果以链表作为栈的存储结构,则退栈操作时()

①必须判别栈是否满②判别栈元素的类型

③必须判别栈是否空④队栈不做任何判别

19.设C语言数组Data[m+1]作为循环队列SQ的存储空间,front为队头指针,rear为队为指针,则执行出队操作的语句为()

①front=front+1②front=(front+1)%m

③rear=(rear+1)%m④front=(front+1)%(m+1)

20.三角矩阵可压缩存储到数组()中。

①M[1:

n(n+1)/2+1]②M[1:

n(n+1)/2]

③M[n(n+1)/2+1]④M[n(n+1)/2]

21.设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出线的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是()

①2②3③5④6

22.设有一顺序栈已含3个元素,如下图所示,元素a4正等待进栈。

那么下列4个序列

中不可能出现的出栈序列是()

0123maxsize-1

a1

a2

a3

sq

↑top

①a3,a1,a4,a2②a3,a2,a4,a1③a3,a4,a2,a1④a4,a3,a2,a1

23.向一个栈顶指针为Top的链中插入一个s所指结点时,其操作步骤为()

①Top->

next=s②s->

next=Top->

Top->

next=s

③s->

next=Top;

Top=s④s->

Top=Top->

next

24.从栈顶指针为Top的链栈中删除一个结点,并将被删节点的值保存到x中,其操作步骤为()

①x=Top

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1