链栈的操作

链栈的定义

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;

//链栈,理论上只要内存够大不存在上溢,只存在下溢(栈空后继续取出元素)
typedef struct _QNode
{
int data;
struct _QNode *next;
}StNode;

链栈的操作

初始化

1
2
3
4
5
6
7
bool initStack(StNode* &st)
{
st = new StNode;
if(!st) return false;
st->next = NULL;
return true;
}

判断栈空

1
2
3
4
5
6
7
bool isEmpty(StNode *st)
{
if(st->next == NULL)
return true;
else
return false;
}

入栈

1
2
3
4
5
6
7
8
9
10
11
12
13
bool pushStack(StNode* &st, int e)
{

StNode *node = new StNode;
if(!node) return false;


node->data = e;
node->next = st->next;
st->next = node;

return true;
}

出栈

1
2
3
4
5
6
7
8
9
10
11
12
bool popStack(StNode* &st, int &e)
{
if(!(st->next)) return false; //栈空
StNode *p;
p = st->next;

e = p->data;
st->next = p->next;
delete p;

return true;
}
作者

CairBin

发布于

2021-10-10

更新于

2021-10-10

许可协议

评论