第三章栈和队列自测题

合集下载

数据结构第三章栈和队列3习题

数据结构第三章栈和队列3习题

第三章栈和队列试题一、单项选择题1.栈的插入和删除操作在()进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置2.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A. top++;B. top--;C. top = 0;D. top;3.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。

A. 3, 2, 1B. 2, 1, 3C. 3, 1, 2D. 1, 3, 24.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。

A. 前一个B. 后一个C. 当前D. 后面5.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。

A. n-2B. n-1C. nD. n+16.从一个顺序存储的循环队列中删除一个元素时,需要()。

A. 队头指针加一B. 队头指针减一C. 取出队头指针所指的元素D. 取出队尾指针所指的元素7.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear8.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front == rearB. front != NULLC. rear != NULLD. front == NULL9.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行操作()。

A. top->link = s;B.s->link = top->link; top->link = s;C. s->link = top; top = s;D. s->link = top; top = top->link;10.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

数据结构第三章(栈与队列)考试题目

数据结构第三章(栈与队列)考试题目

第三章栈与队列一单项选择题:1.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )A.i B.n-i C.n-i+1 D.不确定2.栈和队列的共同点是( )A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点3.若依次输入数据元素序列{a,b,c,d,e,f,g}进栈,出栈操作可以和入栈操作间隔进行,则下列哪个元素序列可以由出栈序列得到?( )A.{d,e,c,f,b,g,a} B.{ f,e,g,d,a,c,b}C.{e,f,d,g,b,c,a} D.{ c,d,b,e,g,a,f}4.一个栈的入栈序列是1,2,3,4,5,则下列序列中不可能的出栈序列是( )A. 2,3,4,1,5B. 5,4,1,3,2C. 2,3,1,4,5D. 1,5,4,3,25. 队列操作的原则是( )A. 先进先出B. 后进先出C. 只能进行插入D. 只能进行删除6. 栈的插入与删除是在( )进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置7.假设顺序栈的定义为:typedef struct {selemtype *base; /* 栈底指针*/selemtype *top; /* 栈顶指针*/int stacksize; /* 当前已分配的存储空间,以元素为单位*/}sqstack;变量st为sqstack型,则栈st为空的判断条件为()。

A.st.base == NULL B.st.top == st.stacksizeC.st.top-st.base>= st.stacksize D.st.top == st.base8.假设顺序栈的定义同上题,变量st为sqstack型,则栈st为满的判断条件为()。

A.st.base == NULL B.st.top == st.stacksizeC.st.top-st.base>= st.stacksize D.st.top == st.base9.在少用一个元素空间的循环队列QU ( m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针) 中,当队列非空时,若插入一个新的数据元素,则其队尾指针rear的变化是( )。

第三章栈和队列练习题

第三章栈和队列练习题

第三章栈和队列练习题一、单项选择题1.一个顺序栈一旦被声明,其占用空间的大小()。

A.已固定B.可以改变C.不能固定D.动态变化2.链栈和顺序栈相比,有一个比较明显的缺点,即()。

A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便3.用单链表表示的链式队列的队头在链表的()位置。

A.链头B.链尾C.链中D.任意位置4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个()结构。

A.堆栈B.队列C.数组D.先性表5.若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…p n,若p1=30,则p10为()。

A.11 B.20 C.19 D.216.循环队列A[m] 存放其元素,用front和rear分别表示队头及队尾,则循环队列满的条件是()。

A.(rear+1)%m=front B.rear =front+1C.rear=front D.(rear+1)%m-1=front7.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。

A.top->next=p; B.p->next=top->next; top->next=p;C.p->next=top; top=p; D.p->next=top->next; top=top->next;8.在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行()。

A.x=top;top=top->next; B.x=top->data;C.top=top->next; x=top->data; D.x=top->data; top=top->next;9.表达式a*(b+c)-d的后缀表达式是()。

栈和队列习题

栈和队列习题

第三章栈和队列练习题一、单项选择题1.一个顺序栈一旦被声明,其占用空间的大小()。

A.已固定B.可以改变C.不能固定D.动态变化2.链栈和顺序栈相比,有一个比较明显的缺点,即()。

A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便3.用单链表表示的链式队列的队头在链表的()位置。

A.链头B.链尾C.链中D.任意位置4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个()结构。

A.堆栈B.队列C.数组D.先性表5.若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…p n,若p1=30,则p10为()。

A.11 B.20 C.19 D.216.循环队列A[m] 存放其元素,用front和rear分别表示队头及队尾,则循环队列满的条件是()。

A.(rear+1)%m=front B.rear =front+1C.rear=front D.(rear+1)%m-1=front7.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。

A.top->next=p; B.p->next=top->next; top->next=p;C.p->next=top; top=p; D.p->next=top->next; top=top->next;8.在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行()。

A.x=top;top=top->next; B.x=top->data;C.top=top->next; x=top->data; D.x=top->data; top=top->next;9.表达式a*(b+c)-d的后缀表达式是()。

第3章栈与队列自测题

第3章栈与队列自测题

第3章栈和队列自测题一、填空题1. 向量(线性表)、栈和队列都是数据结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队头删除元素。

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

不允许插入和删除运算的一端称为栈底。

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

4. 在一个循环队列中,队首指针指向队首元素的储存位置。

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

6. 向栈中压入元素的操作是先进,后出。

7. 从循环队列中删除一个元素时,其操作是先进,后。

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

二、判断正误( F )1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

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

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

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

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

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

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

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

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

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

三、单项选择题( B )1. 栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出()B2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定( DB )3. 判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0 ( B )4. 判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear - QU->front = = m0 B.QU->rear - QU->front -1= = m0C.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,对他们分别进行栈操作或队操作。

栈和队列试题

栈和队列试题

第三章栈和队列一、选择题1. 一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。

(A)edcba(B)decba(C)dceab (D)abcde2.栈结构通常采用的两种存储结构是()。

(A)线性存储结构和链表存储结构(B)散列方式和索引方式(C)链表存储结构和数组(D)线性存储结构和非线性存储结构3.判定一个栈ST(最多元素为m0)为空的条件是()。

(A)ST-〉top!=0 (B)ST-〉top==0(C)ST-〉top!=m0 (D)ST-〉top=m04.判定一个栈ST(最多元素为m0)为栈满的条件是()。

(A)ST->top!=0 (B)ST->top==0(C)ST->top!=m0-1(D)ST->top==m0-15.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。

(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,16.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是()(A)(rear-front+m)%m (B)rear-front+1 (C)rear-front-1(D)rear-front7.栈和队列的共同点是()(A)都是先进后出(B)都是先进先出(C)只允许在端点处插入和删除元素(D)没有共同点8.表达式a*(b+c)-d的后缀表达式是()。

(A)abcd*+-(B)abc+*d- (C)abc*+d-(D)-+*abcd9.4个元素a1,a2,a3和a4依次通过一个栈,在a4进栈前,栈的状态,则不可能的出栈序是()(A)a4,a3,a2,a1 (B)a3,a2,a4,a1(C)a3,a1,a4,a2 (D)a3,a4,a2,a110.以数组Q[0..m-1]存放循环队列中的元素,变量rear和qulen分别指示循环队列中队尾元素的实际位置和当前队列中元素的个数,队列第一个元素的实际位置是()(A)rear-qulen (B)rear-qulen+m(C)m-qulen (D)1+(rear+m-qulen)% m二、填空题1.栈的特点是_______________________,队列的特点是__________________________。

第三章栈和队列习题

第三章栈和队列习题

第三章栈和队列习题第三章栈和队列一,选择1. 对于栈操作数据的原则是()。

A. 先进先出B. 后进先出C. 后进后出D. 不分顺序 3. 最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A. (rear+1) MOD n=frontB. rear=frontC.rear+1=front D. (rear-l) MOD n=front4当利用大小为n的数组顺序存储一个栈时,假定用top= =n表示栈空,则向这个栈插入一个元素时首先应执行语句修改top指针。

A.top++ B.top-- C.top=0 D.top5. 若已知一个栈的入栈序列是1,2,3,?,n,其输出序列为p1,p2,p3,?,pN,若pN是n,则pi是( )。

A. iB. n-iC. n-i+1D. 不确定 6. 一个递归算法必须包括()。

A. 递归部分B. 终止条件和递归部分C. 迭代部分D.终止条件和迭代部分 7. 执行完下列语句段后,i值为:()int f(int x){ return ((x>0) ? x* f(x-1):2);} int i ; i =f(f(1));A.2 B. 4 C. 8 D. 无限递归8. 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( )。

A. 6 B. 4 C. 3 D. 2 9. 栈和队列的共同点是()。

A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素 D. 没有共同点10. 设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈 11. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。

《c语言数据结构》第3章栈和队列自测卷答案

《c语言数据结构》第3章栈和队列自测卷答案

1.【李春葆】向量、栈和队列都是 线性 结构,可以在向量的 任何位置插入和删除元素;对于栈只能在 栈顶 插入和删除元素:对于队列只能在 队尾 插入和 队首删除元素。

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

不允许插入和删除运算的一端称为栈底 。

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

4. 在一个循坏队列中,队首指针指向队首元素的前一个 位置。

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

6. 向栈中压入元素的操作是先 移动栈顶指针,后 存入元素 ,7. 从循环队列中删除一个元素时,其操作是先移动队首指针,后 取出元素8. K00年统考题》带表头结点的空循环双向链表的长度等于 0°解:head | L=head | 头结点 I R=hcad|二、判断正误(判断下列概念的正确性,并作出简要的说明。

)(每小题1分,共10分) ( X ) 1.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂 类型。

借,线性表绘逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。

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

借,不一定吧?调用子程序或函数常用,CPU 中也用队列。

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

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

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

借,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。

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

借,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

数据结构第三章栈和队列练习及答案

数据结构第三章栈和队列练习及答案

一、选择题一、选择题1、栈中存取数据的原则()、栈中存取数据的原则()A 、先进先出B 、先进后出C 、后进后出D 、随意进出、随意进出2、队列中存取数据的原则()、队列中存取数据的原则() A 、先进先出 B 、后进先出 C 、先进后出 D 、随意进出、随意进出3、插入和删除只能在一端进行的线性表,称为()、插入和删除只能在一端进行的线性表,称为()A 、队列B 、循环队列C 、栈D 、循环栈、循环栈4、在栈中,出栈操作的时间复杂度为()、在栈中,出栈操作的时间复杂度为()A 、O (1)B 、O (log 2n )C 、O (n )D 、O (n 2)5、设长度为n 的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为()() A 、O (1) B 、O (log 2n ) C 、O (n ) D 、O (n 2)6、设长度为n 的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为()() A 、O (1) B 、O (log 2n ) C 、O (n ) D 、O (n 2)7、一个线性表的第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是()是() A 、110 B 、108 C 、100 D 、1208、一个栈的入栈序列是a,b,c,d,e ,则栈的不可能的输出序列是(),则栈的不可能的输出序列是()A 、edcbaB 、decbaC 、dceabD 、abcde9、若已知一个栈的入栈序列是1,2,3,……,n ,其输出序列是p1,p2,p3,……,pn ,若p1=n ,则pi 为()为()A 、iB 、n=iC 、n-i+1D 、不确定、不确定10、判断一个栈ST (最多元素m0)为空的条件是())为空的条件是()A 、ST->top==0B 、ST->top==-1C 、ST->top!=m0D 、ST->top==m0 11、判断一个栈ST (最多元素m0)为满的条件是())为满的条件是()A 、ST->top!=0B 、ST->top==0C 、ST->top!=m0D 、ST->top==m0 12、判断一个循环队列QU (最多元素为m0)为空的条件是())为空的条件是() A 、QU.front==QU.rear B 、QU.front!=QU.rearC 、QU.front==(QU.rear+1)%m0D 、QU.front!=(QU.rear+1)%m013、判断一个循环队列QU (最多元素为m0)为满的条件是())为满的条件是()A 、QU.front==QU.rearB 、QU.front!=QU.rearC 、QU.front==(QU.rear+1)%m0D 、QU.front!=(QU.rear+1)%m0 14、循环队列用数组存放其元素值A[0,m-1],已知其头尾指针分别是rear 和front ,则当前队列的元素个数是()队列的元素个数是()A 、(rear-front+m)%mB 、rear-front+1C 、rear-front-1D 、rear-front 15、栈和队列的共同特点是()、栈和队列的共同特点是()A 、都是先进后出B 、都是先进先出、都是先进先出C 、只允许在端点处插入和删除D 、没有共同点、没有共同点二、填空题二、填空题1、设长度为n 的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为(O(N))和(O(1));若又设尾指针,则入队和出队操作的时间复杂度分别为(O(1))和(O(1))。

第三章栈与队列 练习题

第三章栈与队列 练习题

第三章栈与队列练习题一、选择题1、栈结构通常采用的两种存储结构是( A )。

A、顺序存储结构和链表存储结构B、散列和索引C、链表存储结构和数组D、线性链表和非线性存储2、设栈ST用顺序存储结构表示,则栈ST为空的条件是(B)A、ST.top-ST.base<>0B、ST.top-ST.base==0C、ST.top-ST.base<>nD、ST.top-ST.base==n3、向一个栈顶指针为HS的链栈中插入一个s结点时,则执行()A、HS->next=s;B、s->next=HS->next;HS->next=s;C、s->next=HS;HS=s;D、s->next=HS;HS=HS->next;4、从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删除结点的值,则执行(C)A、x=HS;HS=HS->next;B、HS=HS->next;x=HS->data;C、x=HS->data;HS=HS->next; D、s->next=Hs;Hs=HS->next;7、一个队列的入列序列是1,2,3,4,则队列的输出序列是(B )//尾插入元素,头删除元素。

A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,19、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列为满的条件是(C)//不懂啊!!!A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n11、用单链表表示的链式队列的队头在链表的(A)位置A、链头B、链尾C、链中12、判定一个链队列Q(最多元素为n个)为空的条件是( A)A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n14、在一个链队列Q中,删除一个结点需要执行的指令是(C)A、Q.rear=Q.front->next;B、Q.rear->next=Q.rear->next->next;C、Q.front->next=Q.front->next->next; D、Q.front=Q.rear->next;15、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时(D)A、仅修改队头指针B、仅修改队尾指针C、队头尾指针都要修改D、队头尾指针都可能要修改。

数据结构第三章 栈和队列题库(30道)

数据结构第三章 栈和队列题库(30道)

数据结构第三章栈和队列1、栈的“先进后出”特性是指(——[单选题]A 最后进栈的元素总是最先出栈B 当同时进行进栈和出栈操作时,总是进栈优先C 每当有出栈操作时,总要先进行一次进栈操作D 每次出栈的元素总是最先进栈的元素正确答案:A2、设一个栈的进栈序列是A、B、C、D(即元素A~D依次通过该栈),则借助该栈所得到的输出序列不可能是( )。

——[单选题]A A,B,C,DB D,C,B,AC A,C,D,BD D,A,B,C正确答案:D3、一个栈的进栈序列是a、b、c、d、e,则栈的不可能的输出序列是( )。

——[单选题]A edcbaB decbaC dceabD abcde正确答案:C4、已知一个栈的进栈序列是1,2,3,…,n,其输出序列的第一个元素是i(1≤i≤n)则第j(1≤j≤n)个出栈元素是( )。

——[单选题]A iB n-iC j-i+1D 不确定正确答案:D5、设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st栈为栈空的条件为( )。

——[单选题]A st.top==-1B st.top!=-1C st.top!=MaxSizeD st.top==MaxSize6、设顺序栈st的栈顶指针top的初始时为-1,栈空间大小为MaxSize,则判定st栈为栈满的条件是。

——[单选题]A st.top!=-1B st.top==-1C st.top!=MaxSize-1D st.top==MaxSize-1正确答案:D7、当用一个数组data[0..n- 1]存放栈中元素时,栈底最好(——[单选题]A 设置在data[0]处B 设置在data[n- 1]处C 设置在data[0]或data[n- 1]处D 设置在data数组的任何位置正确答案:C8、若一个栈用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进栈的正确操作是(——[单选题]A top++; data[top]=x;B data[top]=x; top++;C Top--; data[top]=x;D data[top]=x; top--;正确答案:A9、若一个栈用数组data[1..n]存储,初始栈顶指针top为n,则以下元素I进栈的正确操作是(——[单选题]A top++; data[top]= x;B data[top]=x; top++ ;C top--; data top]=x;D data[top]=x; top--;正确答案:D10、队列中元素的进出原则是( )。

《数据结构》习题汇编03第三章栈和队列试题

《数据结构》习题汇编03第三章栈和队列试题

第三章栈和队列试题一、单项选择题1.栈的插入和删除操作在()进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置2.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A. top++;B. top--;C. top = 0;D. top;3.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。

A. 3, 2, 1B. 2, 1, 3C. 3, 1, 2D. 1, 3, 24.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。

A. 前一个B. 后一个C. 当前D. 后面5.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。

A. n-2B. n-1C. nD. n+16.从一个顺序存储的循环队列中删除一个元素时,需要()。

A. 队头指针加一B. 队头指针减一C. 取出队头指针所指的元素D. 取出队尾指针所指的元素7.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear8.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front == rearB. front != NULLC. rear != NULLD. front == NULL9.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行操作()。

A. top->link = s;B.s->link = top->link; top->link = s;C. s->link = top; top = s;D. s->link = top; top = top->link;10.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

数据结构-第3章栈和队列自测卷答案

数据结构-第3章栈和队列自测卷答案

第3章栈和队列自测卷答案姓名___________ 班级 _______________一、填空题(每空1分,共15分)1. 向量、栈和队列都是—线性 _结构,可以在向量的 _任何____________ 位置插入和删除元素;对于栈只能在栈顶_插入和删除元素;对于队列只能在_队尾_插入和_队首_删除元素。

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

不允许插入和删除运算的一端称为____ 底______ 。

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

4. 在一个循环队列中,队首指针指向队首元素的_前一个 _位置。

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

6. 向栈中压入元素的操作是先移动栈顶指针,后_存入元素。

7. 从循环队列中删除一个元素时,其操作是先_移动队首指针,后取出元素。

8•带表头结点的空循环双向链表的长度等于_0 _____ 。

解::■、判断正误(判断下列概念的正确性,并作出简要的说明。

)(每小题1分,共10分)(x ) 1.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。

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

错,不一定吧?调用子程序或函数常用,CPU中也用队列。

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

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

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。

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

错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

数据结构第3章 栈与队列习题

数据结构第3章 栈与队列习题

第3章栈与队列一、单项选择题1.元素A、B、C、D依次进顺序栈后,栈顶元素是,栈底元素是。

A.A B.BC.C D.D2.经过以下栈运算后,x的值是。

InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);A.a B.bC.1 D.03.已知一个栈的进栈序列是ABC,出栈序列为CBA,经过的栈操作是。

A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,popC.push,push,pop,pop,push,pop D.push,pop,push,push,pop,pop 4.设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的序列是。

A.A,B,C,D B.D,C,B,AC.A,C,D,B D.D,A,B,C5.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是。

A.edcba B.decbaC.dceab D.abcde6.已知一个栈的进栈序列是1,2,3,……,n,其输出序列的第一个元素是i,则第j个出栈元素是。

A.i B.n-iC.j-i+1 D.不确定7.已知一个栈的进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,Pn,若p1=n,则pi的值。

A.i B.n-iC.n-i+1 D.不确定8.设n个元素进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,p n,若p1=3,则p2的值。

A.一定是2 B.一定是1C.不可能是1 D.以上都不对9.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p3=1,则p1的值。

A.可能是2 B.一定是1C.不可能是2 D.不可能是310.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p3=3,则p1的值。

A.可能是2 B.一定是2C.不可能是1 D.一定是111.设n个元素进栈序列是p1,p2,…,p n,其输出序列是1,2,3,……,n,若p n=1,则p i(1≤i≤n-1)的值。

数据结构第三章栈和队列习题

数据结构第三章栈和队列习题

03栈和队列【单选题】1. 设入栈先后顺序为a,b,c,且在入栈过程中可出栈,则不可能得到的出栈序列是(B)。

A、a,b,cB、c,a,bC、b,c,aD、b,a,c2. 栈是一种(B)的线性表。

A、先进先出B、后进先出C、随意进出3. 在一个可存放n个数据元素的顺序栈中,假设以高地址端为栈底,以top为栈顶指针,当向栈中压入一个数据元素时,top的变化是(D)。

A、不变B、top=nC、top++D、top--4. 设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是(C)。

A、rear=front.nextB、rear=rear.nextC、front=front.nextD、front=rear.next5. 向一个栈顶指针为s且带头结点的链栈中插入一个p所指结点时,应执行(B)。

A、s.next=p;B、p.next=s.next;s.next=pC、p.next=s;s=p;D、p.next=s;s=s.next;6. 从一个栈顶指针为s且不带头结点的链栈中删除一个结点,用x保存被删结点的值,则执行(D)。

A、x=s;s=s.next;B、x=s.data;C、s=s.next;x=s.data;D、x=s.data;s=s.next;7. 设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则插入p所指结点的操作是(B)。

A、front.next=p;front=p;B、rear.next=p;rear=p;C、p.next=rear;rear=p;D、p.next=front;front=p;8. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(C)。

A、iB、n-iC、n-i+1D、不确定【计算题】1. 设入栈序列a、b、c、d,且在入栈的过程中允许出栈,试写出所有不可能得到的出栈序列。

数据结构第3章栈和队列练习题

数据结构第3章栈和队列练习题

第三章栈和队列一、选择题1. 以下不是栈的基本运算的是( )A) 删除栈顶元素B) 删除栈底元素C) 判断栈是否为空D) 将栈置为空栈2. 若进栈序列为1,2,3,4, 进栈过程中可以出栈,则下列不可能的一个出栈序列是( )A) 1,4,3,2 B) 2,3,4,1C) 3,1,4,2 D) 3,4,2,13. 栈和队列的共同点( )A) 都是先进先出B) 都是后进先出C) 只允许在端点处插入和删除元素D) 没有共同点4•若已知一个进栈序列是1,2,3, ••…,n,其输出序列是p1,p2,vp3,…・卩n,若p仁n,贝U pi(1<i<n)为( )。

A) I B) n-iC) n-i+1 D) 不确定5•判断一个栈ST(最多元素为MaxSize)为空的条件是()A) ST->top==1 B) ST->top==-1C) ST->top!=MaxSize-1 D) ST->top==MaxSize-16•向一个栈指针为HS的链式栈中插入一个s所指的结点时,则执行()A) HS->NEXT=S;B) S->NEXT=HS->NEXT;HS->NEXT=S;C) S->NEXT=HS;HS=S;D) S-.NEXT=HS;HS=HS->NEXT;7•在一个链式队列中•假设f和r分别为队头和队尾指针,则插入s所指的结点运算是()A) f->next=s;f=s; B) r->next=s;r=s;C) s->next=s;r=s; D) s->next=f;f=s;8•在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()A) r=f->next; B) r=r->next;C) f=f->next; D) f=r->next;9•下列关于线性表,栈和队列叙述,错误的是()A) 线性表是给定的n(n 必须大于零)个元素组成的序列B) 线性表允许在表的任何位置进行插入和删除操作C) 栈只允许在一端进行插入和删除操作D) 队列只允许在一端进行插入一端进行删除10•—个队列的入队序列是1,2,3,4,则队列的输出序列是()A) 4,3,2,1 B) 1,2,3,4C) 1,4,3,2 D) 3,2,4,111. 设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列()序列是不可能通过栈产生的•A) 1,2,3,4,5 B) 5,3,4,1,2C) 43,2,1,5 D) 3,4,5,2,112. 设栈s的初始状态为空,6个元素的入栈顺序为e1,e2,e3,e4,e5和e6.若出栈的顺序是e2,e4,e3,e6,e5,e1,则栈s的容量至少应该是()A.插入排序 C 快速排序23. 栈的插入和删除操作在(A 栈顶 )进行。

栈、队列和数组自测试题

栈、队列和数组自测试题

第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2. 顺序栈3. 链栈4. 递归5. 队列、队尾、队头6. 顺序队7. 循环队8. 队满9. 链队10. 随机存储结构11. 特殊矩阵12. 稀疏矩阵13. 对称方阵14. 上(下)三角矩阵二、填空题:1. 栈修改的原则是_____________ 或称_________ ,因此,栈又称为 _________ 线性表。

在栈顶进行插入运算,被称为__________ 或 _________ ,在栈顶进行删除运算,被称为 _________ 或__________ 。

2.栈的基本运算至少应包括 ______________ 、_________ 、__________ 、 _________ 、__________ 五种。

3.对于顺序栈,若栈顶下标值top=0, 此时,如果作退栈运算,则产生“ ________________ ”。

4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“ _______________ ”。

5.一般地,栈和线性表类似有两种实现方法,即实现和实现。

6. top=0 表示____________ ,此时作退栈运算,则产生“_________ ”;top=sqstack_maxsize 表示____________ ,此时作进栈运算,则产生“ ____________7.以下运算实现在顺序栈上的初始化,请在 ____________ 处用适当的句子予以填充。

int InitStack(SqStackTp *sq){ ___sq->top=0 _______ ;return(1);}8.以下运算实现在顺序栈上的进栈,请在______________ 处用适当的语句予以填充。

Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error( “ 栈满”;return(O);}else{ _____ sp->top ++; _______________ :_________ *(sp->top) _____________ =x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在用适当句子予以填充。

数据结构第3章 栈与队列习题

数据结构第3章 栈与队列习题

第3章栈与队列一、单项选择题1.元素A、B、C、D依次进顺序栈后,栈顶元素是,栈底元素是。

A.A B.BC.C D.D2.经过以下栈运算后,x的值是。

InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);A.a B.bC.1 D.03.已知一个栈的进栈序列是ABC,出栈序列为CBA,经过的栈操作是。

A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,pop C.push,push,pop,pop,push,pop D.push,pop,push,push,pop,pop 4.设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的序列是。

A.A,B,C,D B.D,C,B,AC.A,C,D,B D.D,A,B,C5.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是。

A.edcba B.decbaC.dceab D.abcde6.已知一个栈的进栈序列是1,2,3,……,n,其输出序列的第一个元素是i,则第j个出栈元素是。

A.i B.n-iC.j-i+1 D.不确定7.已知一个栈的进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,Pn,若p1=n,则pi的值。

A.i B.n-iC.n-i+1 D.不确定8.设n个元素进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值。

A.一定是2 B.一定是1 C.不可能是1 D.以上都不对9.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=1,则p1的值。

A.可能是2 B.一定是1 C.不可能是2 D.不可能是310.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p 3=3,则p1的值。

A.可能是2 B.一定是2 C.不可能是1 D.一定是111.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p n =1,则pi(1≤i≤n-1)的值。

数据结构-第3章--栈和队列练习题.doc

数据结构-第3章--栈和队列练习题.doc

第3章栈和队列一选择题1. 对于栈操作数据的原则是()。

A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ① ),在作退栈运算时应先判别栈是否( ② )。

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

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

①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中心点.B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

A. 不确定B. n-i+1C. iD. n-i4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。

A. i-j-1B. i-jC. j-i+1D. 不确定的5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。

A. iB. n-iC. n-i+1D. 不确定6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 67. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。

A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,8. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是()。

第三章自测题答案

第三章自测题答案

第3章 栈和队列 自测卷答案 姓名 班级一、填空题(每空1分,共15分)1. 向量、栈和队列都是 线性 结构,可以在向量的 任何 位置插入和删除元素;对于栈只能在 栈顶 插入和删除元素;对于队列只能在 队尾插入和 队首 删除元素。

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

不允许插入和删除运算的一端称为 栈底 。

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

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

6. 向栈中压入元素的操作是先 存入元素 ,后 移动栈顶指针。

8. 〖00年统考题〗带表头结点的空循环双向链表的长度等于 0 。

解:二、判断正误(判断下列概念的正确性,并作出简要的说明。

)(每小题1分,共10分)( × )1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。

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

错,不一定吧?调用子程序或函数常用,CPU 中也用队列。

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

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

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。

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

错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (________) exit(OVERFLOW); ( (!S.base) ) S.top = _______________; (S.base + S.stacksize) S.stacksize = _____________________; (S.stacksize + STACKINCREMENT) } *S.top ++= e; return OK; } 6. 以下运算实现在顺序栈上的出栈,请在________________用 适当句子予以填充。
return OK:
}
5. 以下运算实现在顺序栈上的进栈,请在________处用适当的
语句予以填充。
Status Push(SqStack &S,SElemType e) { if (S.top-S.base>=S.stacksize)
{ S.base = (SElemType *)realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));
return ERROR; e = Q.base[Q.front];
return OK; } 17.___________可以作为实现递归函数调用的一种数据结构。 (栈)
二、单项选择题
1.如果以链表作为栈的存储结构,则退栈操作
(②)
①必须判别栈是否满 ②必须判别栈是否空
③判别栈元素的类型 ④对栈不做任何操作
e = _____________; (*(S.top-1) ) return OK; } 10.在队列中,新插入的结点只能添加到________________,被删 除的只能是排在________________的结点。(队尾,队头) 11.顺序队列的出、入队操作会产生“________________”。(假上 溢) 12.以下运算实现在循环队列上的初始化,请在_______________处 用适当句子予以填充。
下列4个序列
中不可能出现的出栈序列是
(①)
maxsize-1 a1 a2 a3 sq
01
2
3
↑top
①a3,a1,a4,a2
②a3,a2,a4,a1
③ a3,a4,a2,a1
④a4,a3,a2,a1
4.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是
(③ )①Βιβλιοθήκη dcba②d e c b a
int StackEmpty (SqStack &S) { return ________________ ; ( S.top == S.base ) } 9.以下运算实现在顺序栈上取栈顶元素,请在________________处用 适当句子予以填充。
Status GetTop(SqStack S,SElemType &e) { if (_____________) return ERROR; ((S.top == S.base) )
第三章 栈、队列
1、 填空题 1. 在栈顶进行插入运算,被称为_______,在栈顶进行删除运 算,被称为______。(压栈push,出栈pop) 2. 对于顺序栈,若栈顶下标值top=0,此时,如果作出栈运算,则 产生“________”。(下溢) 3. 栈和线性表类似有两种实现方法,即________实现和 ________实现。(顺序,链接) 4. 以下运算实现在顺序栈上的初始化,请在________处用适当 的句子予以填充。
) return OK;
} 15. 以下运算实现在循环队列上判队空,请在________________处用 适当句子予以填充。 Int QueueEmpty (SqQueue &Q) { return ____________________; } ( Q.front == Q.rear) 16. 以下运算实现在顺序队列上取队头元素,请在____________处用 适当句子予以填充。 Status QueueGetHead(SqQueue Q , QElemType &e) { if (______________) ( Q.front == Q.rear)
Status InitStack(SqStack &S)
{ S.base
=
(SElemType
*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if (!S.base) exit(OVERFLOW);
S.top = _ _______; (S.base)
S.stacksize = ____________; (STACK_INIT_SIZE)
③d c e a b
④a b c d e
5.一个队列的输入序列是1,2,3,4,则队列的输出序列是
(②)
① 4,3,2,1
② 1,2,3,4,
③1,4,3,2
④ 3,2,4,1
6.设计一个判别表达式中左、右括号是否配对出线的算法,采用( ②
)数据结构最佳。
① 线性表的顺序存储结构
②栈
③ 队列
④ 线性表的链式存储结构
Status Pop(SqStack &S,SElemType &e) { if (_____________) ((S.top == S.base) )
return ERROR;
e = ________; (*--S.top ) return OK; } 8. 以下运算实现在顺序栈上判栈空,请在________________处用适 当句子予以填充。
2.设C语言数组Data[m+1]作为循环队列SQ的存储空间, front为队头
指针,rear为队为指针,则执行出队操作的语句为
(④ )
①front=front+1
② front=(front+1)%m
③rear=(rear+1)%m
④ front=(front+1)%(m+1)
3.设有一顺序栈已含3个元素,如下图所示,元素a4正等待进栈。那么
Status InitQueue(SqQueue &Q) { Q.base=(QElemType*)malloc(MAXQSIZE *sizeof(QElemType)); if ___________ exit(OVERFLOW); ( (!Q.base) ) Q.front = Q.rear = _________; ( 0 ) return OK; } 13. 以下运算实现在循环队列上的入队列,请在____________处用请 适当句子予以填充。
Status EnQueue(SqQueue &Q , QElemType e) { if( ________________ ) ( Q.front == (Q.rear+1) % MAXQSIZE )
return ERROR; Q.base[Q.rear] = e; Q.rear = ____________________; ( (Q.rear+1) % MAXQSIZE ) return OK; } 14. 以下运算实现在循环队列上的出队列,请在_____________处用
适当句子予以填充。 Status DeQueue(SqQueue &Q , QElemType &e) { if (______________) ( Q.front == Q.rear) return ERROR; e = Q.base[Q.front]; Q.front = ____________________; ( (Q.front+1) % MAXQSIZE
相关文档
最新文档