一、选择题

1.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是(D)
A f+1==r
B r+1==f
C f==0
D f==r

2.假定一个链队(有头结点)的队首和队尾指针分别为front和rear,则判断队空的条件是(A)
A front==rear
B front!=NULL
C rear!=NULL
D front==NULL

3.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是 (A)
A (rear-front+m)%m
B rear-front+1
C rear-front-1
D rear-front

4.判定一个循环队列QU(最多元素为m, m= =Maxsize-1)为满队列的条件是 (A)
A ((rear- front)+ Maxsize)% Maxsize = =m
B rear-front-1= =m
C front= =rear
D front= = rear+1

5.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是 (B)
A 4,3,2,1
B 1,2,3,4
C 1,4,3,2
D 3,2,4,1

6.从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行什么。(不带空的头结点) (D)
A x=HS; HS= HS—>next;
B x=HS—>data;
C HS= HS—>next; x=HS—>data;
D x=HS—>data; HS= HS—>next;

7.从一个循环顺序队列删除元素时,首先需要(B)
A 前移一位队首指针
B 后移一位队首指针
C 取出队首指针所指位置上的元素
D 取出队尾指针所指位置上的元素

8.在一个循环顺序队列中,队首指针指向队首元素的什么位置。(C)
A 前一个
B 后一个
C 当前
D 后面

9.当利用大小为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行什么语句修改top指针。 (B)
A top++
B top–
C top=0
D top

10.栈和队列的共同点是 (C)
A 都是先进后出
B 都是先进先出
C 只允许在端点处插入和删除元素
D 没有共同点

11.一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是 (C)
A edcba
B decba
C dceab
D abcde

12.队列操作的原则是(A)
A 先进先出
B 后进先出
C 只能进行插入
D 只能进行删除

13.判定一个顺序栈ST(最多元素为m0)为空的条件是 (B)
A top!=0
B top= =0
C top!=m0
D top= =m0-1

14.栈结构通常采用的两种存储结构是(A)
A 顺序存储结构和链式存储结构
B 散列方式和索引方式
C 链表存储结构和数组
D 线性存储结构和非线性存储结构

15.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为 (C)
A i
B n-i
C n-i+1
D 不确定

二、编程题

判断字符串镜像——栈

【注意】本题务必使用顺序栈或者链式栈的一种来实现,否则不给分。

【问题描述】试写一个算法,识别依次读入的一个以“@”为结束符的字符序列是否为形如 “序列1&序列2” 模式的字符序列。其中序列1和序列2都不含字符 “&”,且序列2是序列1的逆序列。例如,“ a+b&b+a ”是属该模式的字符序列,而 “1+3&3-1”则不是。

【输入形式】
以@为结尾的一串字符

【输出形式】
若符合模式则输出字符串长度,否则输出no

【样例输入】
a+b&b+a@

【样例输出】
3

#include<iostream>
#include<string>
using namespace std;class array_stack
{public:array_stack(int size);bool push(char str);void pop();char top();bool is_empty();bool is_full();private:struct STACK{char data;struct STACK * next;}*p, *q, *head;int _size;int max_size;
};array_stack::array_stack(int size)
{p = NULL; q = NULL;head = NULL;max_size = size;_size = 0;
}inline bool array_stack::push(char str)
{if (is_full())return false;p = new STACK;p->data = str;p->next = NULL;if (head == NULL)head = p;if (q == NULL)q = p;else{q->next = p;q = p;}_size++;return true;
}void array_stack::pop()
{if (is_empty())return;if (head->next == NULL) // 只有一个元素时候{delete head;head = NULL;p = NULL;q = NULL;return;}for (p = head; p->next != q; p = p->next);delete q;p->next = NULL;q = p;_size--;
}char array_stack::top()
{if (is_empty())return '0';for (p = head; p->next != NULL; p = p->next);return p->data;
}bool array_stack::is_empty()
{if (head == NULL)return true;return false;
}bool array_stack::is_full()
{if (_size < max_size)return false;return true;
}int main()
{string str;int i;array_stack sta1(50);int str_length = 0;cin >> str;for (i = 0; str[i] != '&'; i++){sta1.push(str[i]);str_length++;}for (i = str.find('&') + 1; str[i] != '@'; i++){if (str[i] == sta1.top())sta1.pop();}if (sta1.is_empty())cout << str_length << endl;else{cout << "no" << endl;}return 0;
}

【数据结构】数据结构练习题2——栈+队列相关推荐

  1. c语言用两个栈构造队列伪码,数据结构习题线性表栈队列.doc

    数据结构习题线性表栈队列 线性表(58) 1. 在单链表.双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少? 2.设线性表的 ...

  2. 数据结构,堆和栈和队列的概念

    数据结构,堆和栈和队列的概念 1 什么是数据结构 数据结构是计算机存储,组织数据的反复改.数据结构是指相互之间存在的一种或多种特定关系的数据元素集合. 2 数据结构的逻辑结构 1 集合结构,元素都是孤 ...

  3. 数据结构栈队列链表数组

    目录: 数据结构 栈(stack) 队列 链表 数组 数据结构 数据结构是什么 简单来说,数据结构就是设计数据以何种方式存储在计算机中 比如:列表,集合,与字典等都是一种数据结构 程序 = 数据结构 ...

  4. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...

    本文实例讲述了java数据结构之链表.栈.队列.树的实现方法.分享给大家供大家参考,具体如下: 最近无意中翻到一本书,闲来无事写几行代码,实现几种常用的数据结构,以备后查. 一.线性表(链表) 1.节 ...

  5. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  6. 数据结构与算法--利用栈实现队列

    利用栈实现队列 上一节中说明了栈的特点 后进先出,我们用数组的方式实现了栈的基本操作api,因此我们对栈的操作是不考虑排序的,每个api的操作基本都是O(1)的世界,因为不考虑顺序,所以找最大,最小值 ...

  7. (王道408考研数据结构)第三章栈和队列-第三节1:栈的应用之括号匹配问题和表达式问题(前缀、中缀和后缀)

    前面我们就说过,栈是一种先进后出的线性表,这种先进后出的特性就决定了它在一类场合或问题中会经常被用到--递归.考研数据结构中所涉及的利用栈结构解决递归问题或者考察栈结构特性的问题主要有这么几类 括号匹 ...

  8. 数据结构-线性表之用队列实现栈用栈实现队列

    文章目录 **********用队列实现栈 一:思路 二:实现 (1)结构体定义 (2)初始化和销毁 (3)进"栈" (4)出"栈" 三:代码 ******** ...

  9. 【数据结构与算法】栈与队列【C语言版】

    目录 3.1 栈和队列的定义和特点 3.2 栈.队列与一般线性表的区别 3.3 栈的表示和操作的实现 顺序栈与顺序表 ================= 顺序栈的表示 顺序栈初始化 判断顺序栈是否为空 ...

最新文章

  1. linux下解压缩文件中文乱码问题的解决
  2. AI大厂迎最冷冬天?网传阿里拟裁员2万人,净利下滑高管离职
  3. 格力入局的数控机床,掌握“核心科技”有多难?
  4. HTTP中Accept与Content-Type区别
  5. 用页传值方式解决模态窗口的Response.WriteFile文件下载
  6. Linux下paste命令详解
  7. python编程之路——类和对象
  8. python爬虫解析数据_Python爬虫入门知识:解析数据篇
  9. Angular2之路由学习笔记
  10. Django 数据库常见 Field Types
  11. MongoDB配置副本集时需要注意的机制
  12. 2021-02-16
  13. Visio连接线相关问题
  14. java 获取一年内周六周日日期
  15. 能转PDF格式用的在线软件
  16. 与200位专家相约,看国内外最新研发经验
  17. 【等保实践】等级保护仅仅是合规吗?
  18. Kotlin高仿微信-第58篇-开通VIP
  19. win10新建虚拟机网络配置未连接服务器,win10虚拟主机怎么联网(win10虚拟机连不上网)...
  20. 红旗linux hba卡wwn,Redhat Linux下安装HBA卡并查看WWN号

热门文章

  1. javaweb登录界面验证码自动生成,点击重新生成验证码,验证码与输入框的校验
  2. java camel exchange类_camel
  3. java 中文怎么截取_Java截取字符串的函数且保证中文截取正常
  4. DDR3、DDR4、LPDDR3、DDR3L
  5. 使用VIVADO中的MIG控制DDR3(AXI接口)四——MIG配置及DDR3读写测试
  6. CentOS 5.2下安装网卡驱动
  7. java关闭io流_为什么要关闭和io流
  8. stm32外部中断实验
  9. RK3399教程:android hal 加载wifi
  10. 找不到任何WIFI信号 网卡~MediaTek MT7921