堆栈链式实现入栈出栈等操作(C)
来源:互联网 发布:链家端口费多少 编辑:程序博客网 时间:2024/05/19 07:07
//堆栈的链式
#include<stdio.h>
#include<malloc.h>
typedef int DataType;
typedef struct Sstack
{ DataType data;
struct Sstack *next;
}Lstack;
//初始化
void StackInit(Lstack **s)
{
*s=(Lstack*)malloc(sizeof(Lstack)); //他就是传进来的那个指针变量,来存放申请的地址
(*s)->next=NULL; //申请了一个头结点,也就是申请的那个地址
}
//判断是否为空
int StackNe(Lstack *s,DataType x)
{
//判断堆栈是否为空
if(s->next==NULL)
{
printf("这个栈为空!");
return 0;
}
else
{
printf("这个栈不为空");
}
}
//入栈
int StackInsert(Lstack *s, DataType x)
{
// 在添加元素的时候要动态的申请节点添加到头结点之后
Lstack *p;
p=(Lstack*)malloc(sizeof(Lstack));
p->data=x;
p->next=s->next; //这两个就说明了头指针是在栈顶,而且每次添加的节点都在
s->next=p; //头指针之后再前一个节点之前,也就是最后插入的在栈顶。
return 1;
}
//出栈
int StackOut(Lstack *s,DataType *x)
{
Lstack *p;
p=s->next;
if(p==NULL)
{
printf("栈为空");
return 0;
}
else
{
s->next=p->next;
*x=p->data;
free(p);
return 1;
}
}
//取出栈顶元素
int StackTop(Lstack *s,DataType *x)
{
Lstack *p;
p= s->next;
if(p==NULL)
{
printf("堆栈为空");
return 0;
}
else
{
*x=p->data;
return 1;
}
}
//释放申请空间
void StackDestroy(Lstack *s)
{
Lstack *p,*q;
p=s;
while(p!=NULL)
{
q=p;
p=p->next;
free(q) ;
}
}
//主函数
int main()
{
int i, x;
Lstack *mystack;
//初始化
StackInit(&mystack);
//入栈
for(i=0;i<10;i++)
StackInsert(mystack,i+1) ;
//出栈
for (i=0;i<10;i++)
{
StackOut(mystack,&x);
printf("%d \t",x);
}
return 0;
}
#include<stdio.h>
#include<malloc.h>
typedef int DataType;
typedef struct Sstack
{ DataType data;
struct Sstack *next;
}Lstack;
//初始化
void StackInit(Lstack **s)
{
*s=(Lstack*)malloc(sizeof(Lstack)); //他就是传进来的那个指针变量,来存放申请的地址
(*s)->next=NULL; //申请了一个头结点,也就是申请的那个地址
}
//判断是否为空
int StackNe(Lstack *s,DataType x)
{
//判断堆栈是否为空
if(s->next==NULL)
{
printf("这个栈为空!");
return 0;
}
else
{
printf("这个栈不为空");
}
}
//入栈
int StackInsert(Lstack *s, DataType x)
{
// 在添加元素的时候要动态的申请节点添加到头结点之后
Lstack *p;
p=(Lstack*)malloc(sizeof(Lstack));
p->data=x;
p->next=s->next; //这两个就说明了头指针是在栈顶,而且每次添加的节点都在
s->next=p; //头指针之后再前一个节点之前,也就是最后插入的在栈顶。
return 1;
}
//出栈
int StackOut(Lstack *s,DataType *x)
{
Lstack *p;
p=s->next;
if(p==NULL)
{
printf("栈为空");
return 0;
}
else
{
s->next=p->next;
*x=p->data;
free(p);
return 1;
}
}
//取出栈顶元素
int StackTop(Lstack *s,DataType *x)
{
Lstack *p;
p= s->next;
if(p==NULL)
{
printf("堆栈为空");
return 0;
}
else
{
*x=p->data;
return 1;
}
}
//释放申请空间
void StackDestroy(Lstack *s)
{
Lstack *p,*q;
p=s;
while(p!=NULL)
{
q=p;
p=p->next;
free(q) ;
}
}
//主函数
int main()
{
int i, x;
Lstack *mystack;
//初始化
StackInit(&mystack);
//入栈
for(i=0;i<10;i++)
StackInsert(mystack,i+1) ;
//出栈
for (i=0;i<10;i++)
{
StackOut(mystack,&x);
printf("%d \t",x);
}
return 0;
}
- 堆栈链式实现入栈出栈等操作(C)
- C/C++ 堆栈、队列的链式实现
- 链式堆栈(C,JAVA分别实现)
- 链式堆栈——C语言实现
- 链式堆栈.c
- 链式实现的堆栈
- 链式堆栈实现
- 链式堆栈的实现
- 数据结构C语言实现系列——链式堆栈
- c 堆栈的链式存储
- C 堆栈的链式表示
- 堆栈的链式储存实现
- 用链表实现堆栈--链式栈
- 堆栈的链式存储实现
- 链式堆栈的实现 (带头节点的链式堆栈)
- 堆栈基本操作--顺序堆栈及链式堆栈
- 堆栈的链式建立和操作
- 堆栈的相关操作_链式存储
- 新版IKEEPER去除广告
- 配置cocos2d-iphone
- 黑马程序员 Java 正则表达式中的数量词
- [每日一题] OCP1z0-047 :2013-07-18 时间格式................................................................7
- 【Java】单例设计模式Singleton
- 堆栈链式实现入栈出栈等操作(C)
- 2013-7-18_SSH的开发_JSP调用ACTION的值一些错误
- 深度学习( Deep Learning )软件资源列表
- EasyUI datagrid使用JS删除多行rows的解决方案
- 多媒体开发指南
- padding和margin的异同点
- 让代码飞一会儿,超级有用的CSS编码工具集
- 强烈推荐!”计算机中的数学“系列视频
- 第四周13/03/31