[数据结构-严蔚敏版]P48栈的链式表示
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[数据结构-严蔚敏版]P48栈的链式表示相关的知识,希望对你有一定的参考价值。
代码如下:
#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct SNode
{
ElemType data;
SNode *next;
}SNode;
typedef struct
{
SNode *top;
}SqStack;
bool initStack(SqStack &s)
{
s.top = nullptr;
return true;
}
bool destroyStack(SqStack &s)
{
SNode *q = nullptr;
while (s.top)
{
q = s.top;
s.top = s.top->next;
delete q;
}
s.top = nullptr;
return true;
}
bool stackEmpty(SqStack s)
{
if (!s.top) return true;
return false;
}
int stackLength(SqStack s)
{
int j = 0;
SNode *q = s.top;
while (q)
{
j++;
q = q->next;
}
return j;
}
bool getTop(SqStack s, ElemType &e)
{
if (s.top)
{
e = s.top->data;
return true;
}
return false;
}
bool push(SqStack &s, ElemType e)
{
SNode *q = new SNode;
if (!q) return false;
q->data = e;
q->next = s.top;
s.top = q;
return true;
}
bool pop(SqStack &s, ElemType &e)
{
if (s.top)
{
SNode *q = s.top;
s.top = s.top->next;
e = q->data;
delete q;
return true;
}
return false;
}
void vis(ElemType e)
{
cout << e << " ";
}
void stackTraverse(SqStack s, void(*visit)(ElemType))
{
SNode *q = s.top;
SqStack s1;
initStack(s1);
while (q)
{
push(s1, q->data);
q = q->next;
}
ElemType a;
while (!stackEmpty(s1))
{
pop(s1, a);
visit(a);
}
destroyStack(s1);
}
int main()
{
SqStack s;
initStack(s);
int n;
int a;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a;
push(s, a);
}
getTop(s, a);
cout << "a = " << a << endl;
stackTraverse(s, vis);
cout << endl;
pop(s, a);
pop(s, a);
stackTraverse(s, vis);
cout << endl;
cout << stackLength(s) << endl;
return 0;
}
以上是关于[数据结构-严蔚敏版]P48栈的链式表示的主要内容,如果未能解决你的问题,请参考以下文章