链栈的基本操作
程序员文章站
2022-03-07 10:24:07
...
链栈即是采用链式存储,采用链式存储便于结点的插入和删除,且不存在栈满上溢的情况。这里采用单链表实现,其实可以说是特殊的单链表,在链表的表头进行插入和删除,这里实现链栈时没有头结点。
#include<iostream>
#include<malloc.h>
using namespace std;
#define ElemType int
typedef struct LNode{
ElemType data;//存放栈中元素
struct LNode* next;//指向下一个结点
}LNode,*LSqStack;
void InitLStack(LSqStack &s)
{
s=NULL;
cout<<"初始化成功!"<<endl;
}
bool Push(LSqStack &s,ElemType x)
{
LNode* L=(LNode*)malloc(sizeof(LNode));//创建要插入的结点
L->data=x;
if(s==NULL)//判断是否为空栈
{
L->next=NULL;
}
else
L->next=s;
s=L;//栈的头指针指向栈顶结点
cout<<"进栈成功!"<<endl;
return true;
}
bool Pop(LSqStack &s,ElemType &x)
{
if(s==NULL)//判断栈是否为空
return false;
x=s->data;
LNode* p=s;
s=s->next;
free(p);//将出栈的结点释放
//int z=s->data;
return true;
}
bool GetTop(LSqStack &s,ElemType &x)
{
if(s==NULL)
return false;
x=s->data;
return true;
}
int main()
{
int x,y;
LSqStack s;
InitLStack(s);
Push(s,1);
Push(s,3);
Pop(s,x);
cout<<"x="<<x<<endl;
GetTop(s,y);
cout<<"y="<<y<<endl;
}
上一篇: 2022校招 加特兰微电子-数字电路设计工程师 (持续更新...)
下一篇: python面试总结