链栈入门
来源:互联网 发布:out of the woods知乎 编辑:程序博客网 时间:2024/06/05 01:12
最近复习了一下栈,顺便也敲了一些代码,在此列出来,与大家分享,如果有什么不对或需要改进的地方还请大家指出来。
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node *next;
}LinkStack;
LinkStack *initStack() //含头结点的栈
{
LinkStack *L;
L=new LinkStack;
L->next=NULL; //栈为空
cout<<"初始化栈成功!"<<endl;
return L;
}
int StackEmpty(LinkStack *L)
{
if(!L->next)
cout<<"栈空"<<endl;
}
void Push(LinkStack *L,int e)
{
cout<<"元素入栈了!"<<endl;
LinkStack *p;
p=new LinkStack;
p->data=e;
p->next=L->next;
L->next=p;
}
int Pop(LinkStack *L,int *e)
{
LinkStack *p;
if(!L->next)
return 0;
p=L->next;
*e=p->data;
L->next=p->next;
delete p;
return 1;
}
int GetTop(LinkStack *L,int *e)
{
if(!L->next)
return 0;
*e=L->data;
return 1;
}
void DispStack(LinkStack *L)
{
LinkStack *p=L->next;
cout<<"显示栈: ";
if(!p)
cout<<"NULL";
else
{
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
}
cout<<endl;
}
void ClearStack(LinkStack *L)
{
LinkStack *p=L->next;
while(p)
{
delete L;
L=p;
p=p->next;
}
}
int StackLength(LinkStack *L)
{
cout<<"开始计算栈长了!"<<endl;
int i=0;
LinkStack *p;
p=L->next;
while(p)
{
i++;
p=p->next;
}
return i;
}
int main(void)
{
int e,x;
LinkStack *L;
L=initStack();
StackEmpty(L);
cout<<"输入入栈元素: ";
while(cin>>e)
{
Push(L,e);
}
cout<<"栈长为: "<<StackLength(L)<<endl;
DispStack(L);
cout<<"出栈元素为: ";
while(Pop(L,&x))
{
cout<<x<<" ";
}
cout<<endl;
ClearStack(L);
if(StackEmpty(L))
cout<<"栈空!";
return 0;
}
- 链栈入门
- stack栈入门
- hdu1022栈入门
- HDU1022栈入门
- 【C++】链表入门
- 区块链 入门 基础知识
- 链表入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 笔试题
- 【AngluarJS: Up & Running】P69 CheckBox的双向数据绑定
- PLSQL Developer连接远程oracle配置
- 用Junit写单元测试用例
- Android开发各类常见错误解决方案
- 链栈入门
- Android TestView实现跑马灯效果的两种方法
- 判断网络是否有效的一些方法
- 征程开始了......
- 输入一个正整数n,求第n小的质数
- java socket——心跳包
- Jmeter操作手册
- 解决ajax和spring的跨域访问问题
- 27.angular filter中过滤超出部分变成...