文档库 最新最全的文档下载
当前位置:文档库 › 数据结构—章节练习题资料

数据结构—章节练习题资料

数据结构—章节练习题资料
数据结构—章节练习题资料

第2章线性表

班级学号__________-姓名

一、判断正误

()1. 链表的每个结点中都恰好包含一个指针。

()2. 链表的物理存储结构具有同链表一样的顺序。

()3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。

()4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

()5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

()6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

()7. 线性表在物理存储空间中也一定是连续的。

()8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。()9. 顺序存储方式只能用于存储线性结构。

()10. 线性表的逻辑顺序与存储顺序总是一致的。

二、单项选择题

()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:

(A)存储结构(B)逻辑结构(C)顺序存储结构

(D)链式存储结构

()2. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是

(A)110 (B)108 (C)100 (D)120

()3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:

(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)

(B)在第i个结点后插入一个新结点(1≤i≤n)

(C)删除第i个结点(1≤i≤n)

(D)将n个结点从小到大排序

()4. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素

(A)8 (B)63.5 (C)63 (D)7

()5. 链接存储的存储结构所占存储空间:

(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

(B)只有一部分,存放结点值

(C)只有一部分,存储表示结点间关系的指针

(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数

()6. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址:

(A)必须是连续的(B)部分地址必须是连续的

(C)一定是不连续的(D)连续或不连续都可以

()7.线性表L在情况下适用于使用链式结构实现。

(A)需经常修改L中的结点值(B)需不断对L进行删除插入

(C)L中含有大量的结点(D)L中结点结构复杂

()8.单链表的存储密度

(A)大于1;(B)等于1;(C)小于1;(D)不能确定

()9.设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为

P034

P0→→→

(A)循环链表(B)单链表(C)双向循环链表(D)双向链表

()10.下面关于线性表的叙述中,错误的是哪一个?

A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

()11.线性表是具有n个________的有限序列(n>0)。

A.表元素 B.字符 C.数据元素 D.数据项

()12.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用______存储方式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表

()13.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用 _______存储方式最节省运算时间。

A.单链表 B.仅有头指针的单循环链表

C.双链表 D.仅有尾指针的单循环链表

()14. 静态链表中指针表示的是________.

A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩

子地址

()15. 链表不具有的特点是_________.

A.插入、删除不需要移动元素 B.可随机访问任一元素

C.不必事先估计存储空间 D.所需空间与线性长度成正比

()16.完成在双循环链表结点p之后插入s的操作是().

A. p^.next:=s ; s^.priou:=p; p^.next^.priou:=s ; s^.next:=p^.next;

B. p^.next^.priou:=s; p^.next:=s; s^.priou:=p; s^.next:=p^.next;

C. s^.priou:=p; s^.next:=p^.next; p^.next:=s; p^.next^.priou:=s ;

D. s^.priou:=p; s^.next:=p^.next; p^.next^.priou:=s ; p^.next:=s; ()17.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:()。

A.p->next=s;s->next=p->next; B. s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next; D. p->next=s->next;p->next=s;

()18.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL

()19. 在双向链表存储结构中,删除p所指的结点时须修改指针()。

A. (p^.llink)^.rlink:=p^.rlink (p^.rlink)^.llink:=p^.llink;

B. p^.llink:=(p^.llink)^.llink (p^.llink)^.rlink:=p;

C. (p^.rlink)^.llink:=p p^.rlink:=(p^.rlink)^.rlink

D. p^.rlink:=(p^.llink)^.llink p^.llink:=(p^.rlink)^.rlink;

三、简答题

1.线性表有两种存储结构:一是顺序表,二是链表。试问:

(1)如果有 n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构?为什么?

(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么?

2 . 在单链表中设置头结点的作用是什么?

四、线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五个元素的线性表L={23,17,47,05,31},若它以链接方式存储在下列100~119号地址空间中,每个结点由数据(占2

^^

100120

其中指针X,Y,Z的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?

五、编程题

1. 写出顺序创建单链表的程序,即按从a1到an顺序创建。

2. 已知一个带头结点的单链表L,请编程求该单链表中数据元素的个数。

3. 设有一带头结点的单链表,编程将链表颠倒过来,即(a1...a n)逆置为(a n...a1),要求不

用另外的数组或结点完成.

4.请写一个算法将顺序存储结构的线性表(a1...a n)逆置为(a n...a1),要求使用最少的附加空间。

第3章栈和队列

班级学号__________姓名___________

一、填空题

1. 向量、栈和队列都是结构,可以在向量的位置插入和删除元素;对于

栈只能在插入和删除元素;对于队列只能在插入和删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为。不允许插入和删

除运算的一端称为。

3. 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性

表。

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

5. 带表头结点的空循环双向链表的长度等于。

二、判断正误

()1. 在表结构中最常用的是线性表,栈和队列不太常用。

()2. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。

()3. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

()4. 栈和链表是两种不同的数据结构。

()5. 栈和队列是一种非线性数据结构。

()6. 栈和队列的存储方式既可是顺序方式,也可是链接方式。

()7. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

()8. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

()9. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。

三、单项选择题

()1. 栈中元素的进出原则是

A.先进先出B.后进先出C.栈空则进D.栈满则出

()2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为

A.i B.n=i C.n-i+1 D.不确定

()3. 判定一个栈ST(最多元素为m0)为空的条件是

A.ST->top<>0 B.ST->top=0

C.ST->top<>m0 D.ST->top=m0

()4. 判定一个队列QU(最多元素为m0)为满队列的条件是

A.QU->rear -QU->front = = m0

B.QU->rear -QU->front -1= = m0

C.QU->front = = QU->rear

D.QU->front = = QU->rear+1

()5.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公

式为

(A)r-f; (B)(n+f-r)% n;

(C)n+r-f; (D)(n+r-f)% n

6. 设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。假设栈或队的初始状态都是空。

现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是 A ,第二次出栈得到的元素是 B ;类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是 C ,第二次出队得到的元素是 D 。经操作后,最后在栈中或队中的元素还有 E 个。

A~D:①a1 ②a2 ③a3 ④a4 E:①1 ②2 ③3 ④0

答:A、B、C、D、E分别为、、、、

7. 栈是一种线性表,它的特点是 A 。设用一维数组A[1,…,n]来表示一个栈,A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。往栈中推入(PUSH)一个新元素时,变量T的值 B ;从栈中弹出(POP)一个元素时,变量T的值 C 。设栈空时,有输入序列a,b,c,经过PUSH,POP,PUSH,PUSH,POP操作后,从栈中弹出的元素的序列是 D ,变量T的值是 E 。

A:①先进先出②后进先出③进优于出④出优于进⑤随机进出B,C:①加1 ②减1 ③不变④清0 ⑤加2

⑥减2

D:①a,b ②b,c③c,a④b,a ⑤c,b

⑥a,c

E:①n+1 ②n+2 ③n④n-1 ⑤n-2

答:A、B、C、D、E分别为、、、、

8. 在做进栈运算时,应先判别栈是否 A ;在做退栈运算时,应先判别栈是否

B 。当栈中元素为n个,做进栈运算时发生上溢,则说明该栈的最大容量为

C 。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 D 分别设在这片内存空间的两端,这样,只有当 E 时,才产生上溢。

A,B:①空②满③上溢④下溢

C:①n-1 ②n ③n+1 ④n/2

D:①长度②深度③栈顶④栈底

E:①两个栈的栈顶同时到达栈空间的中心点②其中一个栈的栈顶到达栈空间的中心点

③两个栈的栈顶在达栈空间的某一位置相遇④两个栈均不空,且一个栈的栈顶到达另一个栈的栈底

答:A、B、C、D、E分别为、、、、

四、简答求解题

1. 说明线性表、栈与队的异同点。

2. 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有

①front=11,rear=19; ②front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?

五、算法设计

1.假设一个数组squ[m]存放循环队列的元素。若要使这m个分量都得到利用,则需另一

个标志tag,以tag为0或1来区分尾指针和头指针值相同时队列的状态是“空”还是“满”。试编写相应的入队和出队的算法。

相关文档