#include <iostream>
#include <cstdio>
using namespace std;
typedef int Status;
typedef int Elem;
typedef struct StackNode
{
/* data */
Elem data;
struct StackNode *next;
}StackNode, *LinkStack;
Status InitStack(LinkStack &S)
{
S = NULL; //真正初始化 只有一个NULL 赣
return 1;
}
Status Push(LinkStack &S, Elem e)
{
StackNode *p = new StackNode;
p->data = e;
p->next = S;
S = p; //没有想错 倒着插 头指针改成P 跟链表前插其实挺像的?
return 1;
}
Status Pop(LinkStack &S, Elem &e)
{
if (S == NULL) return -1;
e = S->data;
StackNode *p = S;
S = S->next;
delete p;
return 1;
}
Status GetTop(LinkStack &S)
{
if (S)
return S->data;
else return -1;
}
int main()
{
LinkStack S;
//1
InitStack(S);
//1
Push(S, 1);
cout<<GetTop(S);
//1
int tmp;
Pop(S, tmp);
cout<<GetTop(S);
}
[数据结构][栈]链表模拟栈及其基本操作
最新推荐文章于 2023-04-13 16:42:03 发布