#include<stdio.h>
typedef struct StackNode
{
int data;
struct StackNode *next;
}StackNode,*LinkStack;
StackNode *p;
//初始化
void InitStack(LinkStack &S)
{
//构造一个空栈 ,栈顶指针置为空
S=NULL;
}
//入栈
bool Push(LinkStack &S,int e)
{
//在栈顶插入元素
p=new StackNode; //生成新结点
p->data=e; //将新结点的数据域置为e
p->next=S; //将新结点插入栈顶
S=p;
printf("入栈元素为:%d\n",e);
return true;
}
//出栈
bool Pop(LinkStack &S,int &e)
{
//删除S的栈顶元素,用e返回其值
if(S==NULL)
return false;
e=S->data; //将栈顶元素赋值给e
p=S; //用p临时保存栈顶元素空间,以备释放
S=S->next; //修改栈顶指针
printf("出栈元素为:%d\n",e);
delete p;
return true;
}
//获取栈顶元素
bool GetTop(LinkStack S,int &e)
{ if(S==NULL)
return false;
printf("栈顶元素为:%d\n",S->data);
}
int main()
{
LinkStack s;
int x;
InitStack(s);
Push(s,3);
Push(s,6);
Push(s,9);
Push(s,12);
Pop(s,x);
Pop(s,x);
GetTop(s,x);
return 0;
}
链表实现进栈、出栈、获取栈顶元素
最新推荐文章于 2023-05-16 23:34:20 发布