数据结构之栈(stack)初步简单实现
来源:互联网 发布:js iframe 子页面跳转 编辑:程序博客网 时间:2024/06/06 09:16
数据结构之栈(stack)初步简单实现:
理解:可以认为是存储数据的“筒”,先放进去的物品会被后放进去的物品“压住”,从而导致取出物品的时候只能从上方取出后放进去的物品;即后进先出【LIFO】。
实现:用一个top变量代表最高位置的数据,当栈内无数据时,top = -1;每存储一个数据top++。
以【判断字符串是否回文】为例,加深对栈的理解。
1、C++用数组实现
#include<iostream>#include<cstring>using namespace std;int main(){char a[100];char stack[100];int top = -1;int len;int mid;int next;cin >> a;len = strlen(a);mid = len/2-1; for(int i=0;i<=mid;i++)stack[++top] = a[i]; //把数据的一半压入栈内 next = len%2==0?mid+1:mid+2;for(int i=next;i<len;i++) //出栈时与另一半数据进行匹配 {if(stack[top] != a[i])break;top--;}if(top == -1) //如果全部都匹配成功,则栈已全空 cout << "Yes" << endl;elsecout << "No" << endl;return 0;}
2、采用C++STL库中的栈实现
#include<iostream>#include<stack>#include<cstring>using namespace std;int main(){stack <char> sta;char temp[100];int len;int mid;int next;cin >> temp;len = strlen(temp);mid = len/2-1;for(int i=0;i<=mid;i++){sta.push(temp[i]);//把数据的一半压入栈内 }next = len%2==0?mid+1:mid+2;for(int i=next;i<len;i++)//出栈时与另一半数据进行匹配 {if(sta.top()!=temp[i])break;sta.pop();}if(sta.empty()) //如果全部都匹配成功,则栈已全空 cout << "Yes" << endl;elsecout << "No" << endl;return 0;}
- size() 返回实际个数
- empty() 判断是否为空,空则返回1,否则返回0;
- push(item) 把item压入栈
- top() 返回栈顶元素
- pop() 将栈顶元素删除
- s1.swap(s2) 将两个栈元素交互
- s1 == s1 判断是否相等
0 0
- 数据结构之栈(stack)初步简单实现
- 数据结构python实现简单Stack
- 数据结构之栈stack
- Java数据结构----栈(Stack)源码分析和个人简单实现
- Java数据结构----栈(Stack)源码分析和用链表简单实现
- Linux 下数据结构的简单实现(list, stack)
- 数据结构(Java语言)——Stack简单实现
- PHP实现栈(Stack)数据结构
- C++数据结构之Stack(栈)
- [数据结构]Stack(数组)实现
- 基本数据结构之栈(stack)
- Java 数据结构之 Stack(栈)
- JavaScript数据结构之--------栈(Stack)
- 栈(stack )数据结构
- java数据结构与算法之栈(Stack)设计与实现
- java数据结构与算法之栈(Stack)设计与实现
- java数据结构之——Stack(栈)
- 数据结构之栈(附:Stack/Vector源码分析)
- 《Thinking in Java》读书笔记(三)万物皆对象
- PCL点云库学习(1)
- 解常微分方程组 python
- Postgresql数据库的一些字符串操作函数
- 开始
- 数据结构之栈(stack)初步简单实现
- smali文件对比java文件
- poj2154Color
- 适应于多种手机分辨率的智能家居版本app
- 页面乱码问题
- java中的File.separator
- C++builder中的队列TQueue
- android hardwareAccelerated硬件加速
- 第9周项目3分数类的运算符重载(续)