#include<iostream>
using namespace std;
typedef struct StackNode
{
int data;
struct StackNode *next;
}StackNode,*LinkStack;//链栈的初始化
void InitStack(LinkStack &S) //构造一个空栈S,栈顶指针置空
{
S=NULL;
}
//入栈
void Push(LinkStack &S,int e)
{
StackNode *p =new StackNode;
p->data=e;
p->next=S;
S=p;
}
//出栈
int Pop(LinkStack &S,int e)//删除栈顶元素,用e值返回
{
StackNode *p =new StackNode;
if (S==NULL)
{
cout<<"error";
}
e=S->data;//将栈顶元素赋给e
p=S;//用p临时保存栈顶元素的空间
S=S->next;//修改栈顶指针
delete p;//释放原栈顶元素的空间
cout<<e;
}
//取栈顶元素
void GetTop(LinkStack &S)
{//返回S的栈顶元素,不修改栈顶指针
if(S!=NULL)
{
cout<<S->data;
}
}
int main()
{
LinkStack S;
int e;
InitStack(S);
int Input;
for(int i=0;i<5;i++)
{
cout<<"请输入第"<<i+1<<"个元素";
cin>>Input;
Push(S,Input);
}
int Output;
for(int j=0;j<5;j++)
{
cout<<"第"<<5-j<<"个元素为:";
Pop(S,Output); //出栈
}
}
链栈的基本操作(有详细注释)
最新推荐文章于 2023-05-07 14:25:54 发布