数据结构习题库汇总.doc_第1页
数据结构习题库汇总.doc_第2页
数据结构习题库汇总.doc_第3页
数据结构习题库汇总.doc_第4页
数据结构习题库汇总.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

知识点:01绪论02顺序表03链表04栈05链队列06循环队列07串08数组的顺序表示09稀疏矩阵10广义表11二叉树的基本概念12二叉树遍历、二叉树性质13树、树与二叉树的转换14赫夫曼树15图的定义、图的存储16图的遍历17图的生成树18静态查找(顺序表的查找、有序表的查找)19动态查找(二叉排序树、平衡树、B树)20哈希查找21插入排序(直接插入、折半插入、2路插入、希尔排序)22选择排序(简单选择、树形选择、堆排序)23快速排序、归并排序101A1(1)数据的逻辑结构是(A)。 A数据的组织形式 B数据的存储形式 C数据的表示形式 D数据的实现形式101A1(2)组成数据的基本单位是(C)。 A数据项 B数据类型 C数据元素 D数据变量101B1(3)与顺序存储结构相比,链式存储结构的存储密度(B)。 A大 B小 C相同 D以上都不对101B2(4)对于存储同样一组数据元素而言,(D)。 A顺序存储结构比链接结构多占空间 B在顺序结构中查找元素的速度比在链接结构中查找要快 C与链接结构相比,顺序结构便于安排数据元素 D顺序结构占用整块空间而链接结构不要求整块空间101B2(5)下面程序的时间复杂度为(B)。 x=0; for(i=1;in;i+) for(j=i+1;j=n;j+) x+; AO() BO(n2) CO(1) DO(n)101B2(6)下面程序的时间复杂度为(C)。 for(i=0;im;i+) for(j=0;jn;j+) Aij=i*j; AO(m2) BO(n2) CO(mn) DO(m+n)101C2(7)下面程序段的执行次数为(B)。 for(i=0;ii;j+) state; An(n+1)/2 B(n-1)(n+2)/2 Cn(n+1)/2 D(n-1)(n+2)101D3(8)下面程序的时间复杂度为(A)。 for(i=0;im;i+) for(j=0;jt;j+) cij=0; for(i=0;im;i+) for(j=0;jt;j+) for(k=0;kllink和p-rlink表示,则下列等式中(D)成立。 Ap=p-llink Bp=p-rlink Cp=p-llink-llink Dp=p-llink-rlink103A1(16)线性表采用链式存储时,其地址(D)。 A必须是连续的 B一定是不连续的 C部分地址必须是连续的 D连续与否均可以103B1(17)线性表是(A)。 A一个有限序列,可以为空 B一个有限序列,不可以为空 C一个无限序列,可以为空 D一个无限序列,不可以为空103B1(18)链式存储的线性表中的指针指向其(B)。 A前趋结点 B后继结点 C物理前趋 D物理后继103C2(19)设在链式存储的线性表中,设结点结构为 data link ,欲在p结点后插入一个结点q的关键步骤为(A)。 Aq-link=p-link; p-link=q; Bp-link=q-link; p-link=q; Cq-link=p-link; q-link=p; Dp-link=q-link; q-link=p;103C3(20)设有指针head指向的带表头结点的单链表,现将指针p指向的结点插入表中,使之成为第一个结点,其操作是(A)(其中,p-next、head-next分别表示p、head所指结点的链域)。 Ap-next=head-next; head-next=p; Bp-next=head-next; head=p; Cp-next=head; head=p; Dp-next=head; p= head;104A1(21)在栈中,下列说法正确的是(A)。 A每次插入总是在栈顶,每次删除也总是在栈顶。 B每次插入总是在栈顶,每次删除总是在栈底。 C每次插入总是在栈底,每次删除总是在栈顶。 D每次插入总是在栈底,每次删除也总是在栈底。104B2(22)设有一个栈,按A、B、C的顺序进栈,则下列(C)为不可能的出栈序列。 AABC BCBA CCAB DACB104B2(23)设有一个栈,按A、B、C、D的顺序进栈,则下列(D)为可能的出栈序列。 ADCAB BCDAB CDBAC DACDB104A2(24)顺序栈的上溢是指(B)。 A栈满时作退栈运算 B栈满时作进栈运算 C栈空时作退栈运算 D栈空时作进栈运算104D3(25)顺序栈S中top为栈顶指针,指向栈顶元素所在的位置,elem为存放栈的数组,则元素e进栈操作的主要语句为(D)。 Aselemtop=e; stop=stop+1; Bselemtop+1=e; stop=stop+1; Cstop=stop+1; selemtop+1=e; Dstop=stop+1; selemtop=e;104C2(26)设有5个元素A,B,C,D,E顺序进栈(进栈过程中可以出栈),出栈后依出栈次序进入队列,已知其出队次序为D,C,E,B,A,则该栈容量必定不小于(C)。 A2 B3 C4 D5104B2(27)设栈S的初始状态为空,现有五个元素组成的序列1,2,3,4,5,对该序列在栈S上依次进行PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH操作,出栈的元素序列是(C)。 A5,4,3,2,1 B2,1 C2,3 D3,4104B2(28)在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top为栈顶指针,则当做出栈处理时,top变化为(C)。 Atop不变 Btop=0 Ctop- - Dtop+104D3(29)向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行(B)。 Ahs-next=s; Bs-next=hs;hs=s; Cs-next=hs-next;hs-next=s; Ds-next=hs;hs=hs-next;105A1(30)在队列中,下列说法正确的是(A)。A每次插入总是在队尾,每次删除总是在队头。 B每次插入总是在队尾,每次删除也总是在队尾。C每次插入总是在队头,每次删除也总是在队头。 D每次插入总是在队头,每次删除总是在队尾。105D3(31)在带头结点的链队列q中,用qfront表示队头指针,qrear表示队尾指针,结点结构为data next ,删除链队列的队头结点的主要语句为(B)。 As=qfront; qfront-next= snext; Bs=qfront-next; qfront-next= snext; Cs=qfront-next; qfront= snext; Ds=q; qfront-next= snext;106C3(32)循环队列sq中,用数组elem存放数据元素,sqfront指示队头元素的前一个位置,sqrear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则队列满的条件为(D)。 Asqfront= sqrear Bsqfront= sqrear+1 C(sqfront +1)mod MAXSIZE= sqrear D(sqrear+1)mod MAXSIZE= sqfront106C2(33)循环队列sq中,用数组elem存放数据元素,sqfront指示队头元素的前一个位置,sqrear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则在队列未满时元素x入队列的主要操作为(A)。 Asqrear= (sqrear+1)mod MAXSIZE; sqelemsqrear=x; Bsqelemsqrear=x; sqrear= (sqrear+1)mod MAXSIZE; Csqfront= (sqfront+1)mod MAXSIZE; sqelemsqfront=x; Dsqelemsqfront=x; sqfront= sqfront+1;106B2(34)循环队列sq中,用数组elem025存放数据元素,sqfront指示队头元素的前一个位置,sqrear指示队尾元素的当前位置,设当前sqfront为20,sqrear为12,则当前队列中的元素个数为(D)。 A8 B16 C17 D18106B2(35)设循环队列的元素存放在一维数组Q030中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。如果队列中元素的个数为11,front的值为25,则rear应指向(B)元素。 AQ4 BQ5 CQ14 DQ15105A1(36)队列操作的原则是(A)。 A先进先出 B后进先出 C只能进行插入 D只能进行删除105B2(37)一个队列的入列序列是1234,则队列的输出序列是(B)。 A4321 B1234 C1432 D3241108C2(38)设6行8列的二维数组A68=(aij)按行优先顺序存储,若第一个元素的存储位置为200,且每个元素占3个存储单元,则元素a54的存储位置为(B)。 A308 B305 C266 D269109C2(39)设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为(B)。 A13 B33 C18 D40108A1(40)设二个数组为A07、B-52,38,则这两个数组分别能存放的字符的最大个数是(C)。 A7和35 B1和5 C8和48 D1和6108C3(41)二维数组Mi,j的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到4,列下列j的范围从0到5。M按行存储时元素M3,5的起始地址与M按列存储时元素(B)的起始地址下同。 AM2,4 BM3,4 CM3,5 DM4,4108C2(42)设二维数组为M08,010,每个元素占2L个存储单元,以行序为主序存储,第一个元素的存储位置为P。存储位置为P+50L的元素为(A)。 AM2,3 BM2,2 CM3,3 DM3,4108C2(43)设二维数组A的维数界偶定义为18,010,起始地址为LOC,每个元素占2L个存储单元,以行序为主序存储方式下,某数据元素的地址为LOC+50L,则在列序为主序存储方式下,该元素的存储地址为(D)。 ALOC+28L BLOC+36L CLOC+50L DLOC+52L109B2(44)数组A140,130采用三元组表示,设数组元素与下标均为整型,则在非零元素个数小于(D)时,才能节省存储空间。 A1200 B401 C399 D400108A1(45)一维数组通常采用顺序存储结构,这是因为(C)。A一维数组是一种线性数据结构 B一维数组是一种动态数据结构C一旦建立了数组,则数组中的数据元素之间的关系不再变动 D一维数组只能采用顺序存储结构109A1(46)对稀疏矩阵进行压缩存储的目的是(B)。 A方便存储 B节省存储空间 C方便运算 D节省运算时间108D3(47)设二维数组a05,06按行存储,每个元素占d个存储单元,如果每个元素改为2d个存储单元,起始地址不变,则元素a2,6的存储地址将要增加(A)个存储单元。 A20d B21d C38d D39d108B2(48)一维数组与线性表的区别是(A)。 A前者长度固定,后者长度可变 B后者长度固定,前者长度可变 C两者长度均固定 D两者长度均可变107A1(49)下列关于串的叙述中,不正确的是(B)。 A串是字符的有限序列 B空串是由空格构成的串 C模式匹配是串的一种重要运算 D串既可以采用顺序存储,也可以采用链式存储107B2(50)以下论断正确的是(A)。 A“”是空串,“ ”是空白串 B“BEIJING”是“BEI JING”的子串 C“something”next;或L-next=p;)。103C3(7)某链表如下所示 info link p A B C D E 若要删除值为C的结点,应做操作(p-link=p-link-link)。104A1(8)对于栈只能在(栈顶)插入和删除元素。104C2(9)设有一空栈,现有输入序列1,2,3,4,5,6,经过push,push,pop,push,pop,push,push后,输出序列是(2、3)。106B2(10)有一个循环队列如下图,其队满条件是(front=(rear+1)%n),队列空的条件是(rear=front)。 front 队头指针 rear 队尾指针109B2(11)一个稀疏矩阵为,则对应的三元组线性表为(0,2,2),(1,0,3),(2,2,-1),(2,3,5)。108C2(12)设有二维数组A09,019,其每个元素占两个字节,数组按列优先顺序存储,第一个元素的存储地址为100,那么元素A6,6的存储地址为(232)。112B1(13)在一棵二叉排序树上按(中序)遍历得到的结点序列是一个有序序列。111C3(14)对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为2n个,其中(n-1)个用于链接孩子结点。112B2(15)对于下面的二叉树,按后序遍历得到的结点序列为(4,2,5,6,3,1)。 1 2 3 4 5 6115B1(16)设无向图G的顶点数为n,图G最少有(0)边。117C3(17)对下列图 1 6 2 5 3 4它的生成树有(6)棵。118C3(18)假定在有序表R019上进行二分查找,则比较三次查找成功的结点数为(4)。120D3(19)设有两个散列函数H1(K)=K mod 13和H2(K)=K mod 11+1,散列表为T012,用双重散列法(又称二次散列法)解决冲突。函数H1用来计算散列地址,当发生冲突时,H2作为计算下一个探测地址的地址增量。假定某一时刻散列表T的状态为: 0 1 2 3 4 5 6 7 8 9 10 11 12 T: 80 55 34下一个被插入的关键码为42,其插入位置是(0)。122C3(20)已知一棵二叉排序树如下图所示,则在查找成功的情况下查找每个元素的平均查找长度为(2.75)。 80 50 90 40 70 100 60 75三、完形填空题102D2(1)设顺序存储的线性表存储结构定义为: struct sequnce ELEMTP elemMAXSIZE; int len; /*线性表长度域*/ 将下列简单插入算法补充完整。 void insert(struct sequnce *p,int i,ELEMTP x) v=*p; if(iv.len+1)printf(“Overflow“); else for(j=v.len;j=i;j- -)v.elemj+1=v.elemj; v.elemi= x ;v.len=v.len+1; 103D3(2)设线性链表的存储结构如下: struct node ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ 试完成下列在链表中值为x的结点前插入一个值为y的新结点。如果x值不存在,则把新结点插在表尾的算法。 void inserty(struct node *head,ELEMTP x,ELEMTP y) s=(struct node *)malloc(sizeof(struct node); s-data=y; if(head-data= =x)s-nexr=head;head=s; else q=head;p=q-next; while(p-dqta!=x&p-next!=NULL)q=p;p=p-next; if(p-data= = x)q-next=s;s-next=p; elsep-next=s;s-next=NULL; 103D3(3)设线性链表的存储结构如下: struct node ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ 试完成下列建立单链表的算法。 creat() char var; head=(struct node *)malloc(sizeof(struct node); head-next= NULL ; while(var=getchar()!=n) ptr=( struct node *)malloc(sizeof(struct node); ptr-data= var ;ptr-next=head-next; head-next= ptr ; 103D3(4)下列算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同,试完成该算法。 void DelSameNode(LinkList L) /L是带头结点的单链表,删除其中的值重复的结点/ ListNode * p,*q,*r; p=L-next; /p初始指向开始结点/ while(p) /处理当前结点p/ q=p; r=q-next; do /删除与结点*p的值相同的结点/ while(r&r-data!=p-data) q=r; r=r-next; if(r) /结点*r的值与*p的值相同,删除*r/ q-next=r-next; free(r); r=q-next; while( r ); p=p-next; 106D3(5)假设以带头结点的循环链表表示队列,并且只设一个指针R指向队尾元素结点(注意不设头指针),下列为出队一个元素的算法。DeList(R,e)LinkList *R,p;ElemType e;p=R-next-next;e=p-data;R-next-next=p-next;if(p= =R)R=R-next;free(p); 105D3(6)链队列的存储结构为: struct nodetype ELEMTP data; struct nodetype *next; struct linkqueue struct nodetype *front,*rear; /*front和rear分别为队列的头指针和尾指针*/完成下列删除队头元素的算法。 delq(struct linkqueue *r,ELEMTP *x) q=*r; if(q.front= =q.rear)printf(“QUEUE IS EMPTYn“); elsep=q.front-next; q.front-next=p-next; if(p-next= =NULL)q.rear=q.front; *x=p-data;free(p); 111D3(7)下面算法实现,用一棵二叉树中的结点建立一个按关键字值从小到大次序排列的带表头结点的双向循环链表。二叉树的结点结构如下所示: left key right其中,p是指向结点的指针;p-key表示结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论