链栈入门
2016-09-26 09:32
120 查看
最近复习了一下栈,顺便也敲了一些代码,在此列出来,与大家分享,如果有什么不对或需要改进的地方还请大家指出来。
#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;
}
#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;
}
相关文章推荐
- Linux 程序设计入门
- JAVA学习入门
- Ajax入门----UpdatePanel
- spring入门编程问题集锦
- Toad使用入门
- SELinux入门:了解和配置SELinux
- ASP.NET 4.0从入门到精通 (1) > 视频教程列表
- Http和Socket入门
- Grunt 入门教程一:开始使用Grunt(翻译自官方教程)
- 正则表达式30分钟入门教程
- 【C#入门经典视频教程】-第001课-C#入门-认识C#
- spring 入门
- Bootstrap3.0入门学习系列教程
- PHP最优雅的框架——laravel学习使用入门
- Android入门的一些教程汇总
- Gensim官方教程翻译(一)——快速入门
- Java Mybatis框架入门基础教程
- selenium入门教程
- Django入门(六) 动态URL
- MVC 5 的 EF6 Code First 入门