【数据结构上机练习】5.栈的简单操作(2)
上机3.2
2、编写一个函数SelectItem( Stack & s, int n) ,要求利用堆栈来查找n在栈中第一次出现的位置,并将该位置元素移至栈顶,同时其他元素次序不变。
注:栈类用了之前定义的
1 //============================================================================ 2 // Name : shangji3.2.cpp 第三次上机第二题 3 // Author : menglei 4 // Version : 2012.10.30 5 // Copyright : Your copyright notice 6 // Description : Hello World in C++, Ansi-style 7 //============================================================================ 8 9 /** 10 * 2、编写一个函数SelectItem( Stack & s, int n) , 11 * 要求利用堆栈来查找n在栈中第一次出现的位置, 12 * 并将该位置元素移至栈顶,同时其他元素次序不变。 13 */ 14 #include <iostream> 15 using namespace std; 16 17 //template<class T> 18 class mStack{ //call a stack 19 private: 20 int size; 21 int *stackArray; 22 int top; 23 public: 24 mStack(){ 25 size = 100; 26 top = -1; 27 stackArray = new int[100]; 28 } 29 int pop(){ 30 if(top==-1){ 31 cout<<"stack is empty ,can't pop!"<<endl; 32 return NULL; //返回NULL会有问题,但编译能通过 33 } 34 top--; 35 return stackArray[top]; 36 } 37 int push(int value){ 38 if(top==size){ 39 cout<<"stack is full ! can't push !"<<endl; 40 return -1; 41 } 42 stackArray[top++]= value; 43 return 1; 44 } 45 int getTop(void){ 46 if(top==-1){ 47 cout<<"stack is empty! "<<endl; 48 return NULL; 49 } 50 return stackArray[top-1]; 51 } 52 int isEmpty(){ 53 if(top==-1) 54 return 1; 55 return 0; 56 } 57 58 }; 59 int main() { 60 mStack m; 61 m.push(1); 62 m.push(2); 63 m.push(3); 64 m.push(4); 65 m.push(5); 66 m.push(6); 67 m.push(7); 68 69 mStack temp; 70 int t; 71 int count = 1; 72 t= m.pop(); 73 while(t!=3) //比如查找3 74 { 75 //cout<<"t="<<t<<endl; 76 temp.push(t); 77 t = m.pop(); 78 count++; 79 } 80 //找到了 81 int tempN = t; 82 cout<<"元素3的距离栈顶的位置为:"<<count<<endl; 83 while(!temp.isEmpty()){ 84 m.push(temp.pop()); 85 } 86 m.push(tempN); 87 //下面是检验 88 cout<<"改变后的栈的顺序为:"<<endl; 89 while(!m.isEmpty()){ 90 cout<<m.getTop()<<endl; 91 m.pop(); 92 } 93 return 0; 94 } 95
运行结果:
转载于:https://www.cnblogs.com/menglei/archive/2012/10/30/2746560.html
【数据结构上机练习】5.栈的简单操作(2)相关推荐
- 数据结构单链表的创建以及简单操作
在数据结构中: 目录 一.数据节点类型结构体封装 二.创建单链表 1.创建链表 2.头部插入 3.遍历链表 4.尾部插入 5.释放链表 链表可以解决顺序表无法开辟连续空间的问题,大大提高了内存的利用率 ...
- 数据结构上机应用:栈和队列
问题描述: 某单位停车场共有n个车位,是一个一端封闭的只有一排的狭长通道,车辆只能由左向右依次停放,最右端有一个大门供车辆出入.当车位未满时,车辆可以进入并停在最后一辆车的后面:当车位已满时,车辆需在 ...
- 【数据结构】栈的简单理解以及对栈的基本操作
一.静态栈的简单操作 先来简单的了解一下栈 1.栈:一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作.进行数据插入和删除的一端称为栈顶,另一端称为栈底.不含任何元素的栈称为空栈,栈又称为 后 ...
- 顺序表输入栈元素c语言,C语言数据结构之栈简单操作
C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍 ...
- 数据结构——栈与队列操作(用栈模拟队列)
[栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...
- 基于java的数据结构学习——数组实现的栈以及简单应用C++实现
基于java的数据结构学习--数组实现的栈以及简单应用的 C++ 实现 源码: // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTUR ...
- 数据结构——树的简单操作集合
非常多数据结构的书上解说数据机构时都是採用伪代码实现.事实上感觉蛮不直观的.所以对于全部的数据结构操作我都将其用C实现一遍. 树是学习二叉树的基础,也是后面理解B树.B+树的等树的基础,以下就给出树的 ...
- 基于java的数据结构学习——数组实现的栈以及简单应用
栈 Stack 栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构 栈的应用 无处不在的Undo操作(撤销) 括 ...
- 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
数据结构上机测试2-1:单链表操作A Time Limit: 1000ms Memory limit: 4096K 有疑问?点这里^_^ 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头 ...
最新文章
- Java数据结构与算法(第二章数组)
- Cordova 本地项目创建方法
- SQL SERVER 子查询的用法
- 德语语言文学考研c1,2015-2016同济大学德语语言文学初试考研经验(下)
- 大数据能否力挽国足败落狂澜?
- 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的
- 自己的利益,还是用户的名义?
- CVPR | 旷视提出Meta-SR:单一模型实现超分辨率任意缩放因子
- [py]py常用模块小结
- Android自定义View之刻度尺
- Python工具箱系列(十一)
- 腾讯全套人力资源管理资料大全(职位能力模型图+人力资源管理+招聘体系+培训体系+薪酬绩效+员工职业发展,共174M)
- 贪心算法-会议安排问题
- 转 解决打印机无法打印的方法
- Linux命令之md5sum的作用以及使用方法(md5是什么?)
- 个人微信公众号申请流程
- MATLAB App Designer入门实战(一)
- 浅谈语音助手的对话管理与策略制定
- pythonQQ机器人系列:使用requests实现QQ机器人聊天(1-0)
- Navicat for mysql的相关教程
热门文章
- mybatisplus page排序_PostgreSQL使用WITH xxx AS()查询,使用Page中的OrderItem排序,会把WITH xxx AS()这段SQL忽略导致报错...
- linux dev input使用消失_Linux驱动04 | 启动分析之根文件系统
- 易混单词 expect VS except
- 非资深玩家留言频率限制(1024秒限制)
- html——name与value的使用
- ArcGIS制图表达Representation-制图表达原理
- 深入玩转K8S之使用kubeadm安装Kubernetes v1.10以及常见问题解答
- 7个现象告诉你手游圈为什么会有寒冬
- TweenLite中文帮助手册
- 无缝世界网游服务器架构的设计思路