前言
本文主要介绍数据结构中链式栈的基本操作
一、链式栈的定义
typedef struct Stack
{
struct Stack* next;
int data;
}Stack,*LinkStack;
二、栈的初始化
//初始化栈
void Init_Stack(LinkStack& S)
{
S = NULL;
}
三、判断栈是否为空
//判断栈是否为空 为空返回1 不为空返回0
int is_Empty_Stack(LinkStack S)
{
if (!S)
{
return 1;
}
return 0;
}
四、访问栈顶元素
//取栈顶元素
void Gettop(LinkStack S,int &e)
{
if (S == NULL)
{
cout << "该栈为空" << endl;
return;
}
e = S->data;
}
五、入栈
//入栈操作
void Push_Stack(LinkStack& S, int e)
{
LinkStack p = new Stack;
if (!p)
{
cout << "申请空间失败" << endl;
}
p->data = e;
p->next = S;
S = p;
}
六、出栈
//出栈操作
void Pop_Stack(LinkStack &S, int& e)
{
if (S == NULL)
{
cout << "该栈为空" << endl;
return;
}
e = S->data;
LinkStack p = S;
S = S->next;
delete p;
}
七、清空栈
//清空栈
void Clear_Stack(LinkStack S)
{
S = NULL;
}
八、销毁栈
//销毁栈
void Destory_Stack(LinkStack S)
{
while (S != NULL)
{
LinkStack temp = S;
S = S->next;
delete temp;
}
}
九、所有源代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
typedef struct Stack
{
struct Stack* next;
int data;
}Stack,*LinkStack;
//初始化栈
void Init_Stack(LinkStack& S)
{
S = NULL;
}
//判断栈是否为空 为空返回1 不为空返回0
int is_Empty_Stack(LinkStack S)
{
if (!S)
{
return 1;
}
return 0;
}
//入栈操作
void Push_Stack(LinkStack& S, int e)
{
LinkStack p = new Stack;
if (!p)
{
cout << "申请空间失败" << endl;
}
p->data = e;
p->next = S;
S = p;
}
//出栈操作
void Pop_Stack(LinkStack &S, int& e)
{
if (S == NULL)
{
cout << "该栈为空" << endl;
return;
}
e = S->data;
LinkStack p = S;
S = S->next;
delete p;
}
//取栈顶元素
void Gettop(LinkStack S,int &e)
{
if (S == NULL)
{
cout << "该栈为空" << endl;
return;
}
e = S->data;
}
//清空栈
void Clear_Stack(LinkStack S)
{
S = NULL;
}
//销毁栈
void Destory_Stack(LinkStack S)
{
while (S != NULL)
{
LinkStack temp = S;
S = S->next;
delete temp;
}
}
int main()
{
LinkStack S;
Init_Stack(S);
is_Empty_Stack(S);
int e = 0;
Push_Stack(S, 2);
Pop_Stack(S, e);
return 0;
}