c++中栈stack如何使用? push,poop,top等的具体使用方法。 给出一段简单的代码就行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中栈stack如何使用? push,poop,top等的具体使用方法。 给出一段简单的代码就行。相关的知识,希望对你有一定的参考价值。

参考技术A #include <iostream>
using namespace std;

typedef int DataType;

class SeqStack /*顺序栈类型定义*/

public:
int MAXNUM; /*栈中最大元素个数*/
int t; /*t < MAXNUM,指示栈顶位置,而不是元素个数*/
DataType *s; /*存放栈元素*/
;

typedef SeqStack *PSeqStack; /*顺序栈类型的指针类型*/

/*创建一个空栈*/
PSeqStack createEmptyStack(int m)

PSeqStack pastack = (PSeqStack) new SeqStack; /*分配一个空栈(空结构体)*/

if(pastack != NULL)

pastack->s = (DataType *)malloc(sizeof(DataType) * m); /*分配一个长度为m的栈*/

if(pastack->s)
pastack->MAXNUM = m; /*确定最大长度为m*/
pastack->t = -1; /*初始化栈顶为-1*/
return (pastack); /*返回该栈*/

else
delete(pastack);



cout << "Out of space!! \n"; /*分配失败*/
return NULL;


/*判断pastack是否为空*/
int isEmptyStack(PSeqStack pastack)

if(pastack->t == -1) /*栈为空*/
return 1;
else
return 0; /*栈不为空*/


/*进栈运算*/
void push(PSeqStack pastack , DataType x)

if(pastack->t >= pastack->MAXNUM - 1) /*判断栈顶是否上溢*/
cout << "Overflow! \n";
else

pastack->t = pastack->t + 1; /*栈顶加1*/
pastack->s[pastack->t] = x; /*入栈*/



/*出栈运算*/
void pop(PSeqStack pastack)

if(pastack->t == -1) /*判断栈顶是否下溢*/
cout << "Underflow! \n";
else
pastack->t = pastack->t - 1; /*出栈,即栈顶减1*/


/*取栈顶元素*/
DataType top(PSeqStack pastack)

if(pastack->t == -1)
cout << "It is empty! \n";
else
return (pastack->s[pastack->t]); /*返回栈顶元素*/

return -1; /*空栈*/


int main()

int max , value;
PSeqStack s;

cout << "请输入要分配栈的最大长度: ";
cin >> max;

s = createEmptyStack(max);

/*判断是否为空栈*/
cout << "创建了一个栈:";
if(isEmptyStack(s))
cout << "为空 \n";
else
cout << "不为空 \n";

/*输入栈元素*/
cout << "请输入要入栈的元素(输入-1结束):\n";
cin >> value;
for( ; value != -1;)

push(s , value);
cin >> value;


/*出栈*/
cout << "当前栈顶元素: ";
cout << top(s) << endl;

cout << "请输入出栈次数:\n";
cin >> value;

for( ; value; --value)
pop(s);

cout << "当前栈顶元素: ";
cout << top(s) << endl;

return 0;


这是我以前学的时候用C做的,我帮你把它改成了C++

push、pop、top等就是函数,理解栈的原理的就行 ,当然也可以把这些函数也封装在里面,这是C++常用的做法,不过原理都差不多……本回答被提问者采纳

STL中栈stack的用法

头文件: #include <stack>
建立一个栈stack < 类型 > s //例如 stack<int> s
加入一个新的元素s.push( a )
询问栈顶元素s.top()
弹出栈顶元素s.pop()
栈里面有多少个元素s.size()






以上是关于c++中栈stack如何使用? push,poop,top等的具体使用方法。 给出一段简单的代码就行。的主要内容,如果未能解决你的问题,请参考以下文章

STL中栈stack的用法

用数组来实现Stack

C++ 提高教程 STL stack容器

Tarjan中栈的分析与SLT栈的实现

C ++:堆栈的 push() 与 emplace() [重复]

C++每日一练7.两个栈实现队列