链式堆栈.c
来源:互联网 发布:语音加速器软件 编辑:程序博客网 时间:2024/05/19 05:37
//链式堆栈.c
#include <stdio.h>
#include <malloc.h>
typedef struct Node
{
DataType data;
struct Node *next;
}LSNode;
//初始化
void StackInitiate(LSNode **head)
{
*head=(LSNode *)malloc(sizeof(LSNode));//申请空间
(*head)->next=NULL;
}
//非空否
int StackNotEmpty(LSNode *head)
{
if(head->next=NULL) return 0;
else return 1;
}
//入栈
void StackPush(LSNode *head,DataType x)
{
LSNode *s;
s=(LSNode *)malloc(sizeof(LSNode));//申请空间
s->data=x;
//新结点插入
s->next=head->next;
head->next=s;
}
//出栈
void StackPop(LSNode *head,DataType *x)
{
LSNode *p,*p1;
p=head->next;
if(p==NULL)
{
printf("堆栈已空,无法出栈!");
return 0;
}
else
{
head->next=p>next;//改变head的指向
*d=p->data;
free(p);//free原本的头元素
return 1;
}
}
//取栈元素
void StackTop(LSNode *head,DataTyep *x)
{
LSNode *p;
p=head->next;
if(p==NULL)
{
printf("堆栈已空,无法出栈!");
return 0;
}
else
{
*x=p->data;
return 1;
}
}
//撤销
void Destroy(LSNode **head)
{
LSNode *p=head,*p1;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
#include <stdio.h>
#include <malloc.h>
typedef struct Node
{
DataType data;
struct Node *next;
}LSNode;
//初始化
void StackInitiate(LSNode **head)
{
*head=(LSNode *)malloc(sizeof(LSNode));//申请空间
(*head)->next=NULL;
}
//非空否
int StackNotEmpty(LSNode *head)
{
if(head->next=NULL) return 0;
else return 1;
}
//入栈
void StackPush(LSNode *head,DataType x)
{
LSNode *s;
s=(LSNode *)malloc(sizeof(LSNode));//申请空间
s->data=x;
//新结点插入
s->next=head->next;
head->next=s;
}
//出栈
void StackPop(LSNode *head,DataType *x)
{
LSNode *p,*p1;
p=head->next;
if(p==NULL)
{
printf("堆栈已空,无法出栈!");
return 0;
}
else
{
head->next=p>next;//改变head的指向
*d=p->data;
free(p);//free原本的头元素
return 1;
}
}
//取栈元素
void StackTop(LSNode *head,DataTyep *x)
{
LSNode *p;
p=head->next;
if(p==NULL)
{
printf("堆栈已空,无法出栈!");
return 0;
}
else
{
*x=p->data;
return 1;
}
}
//撤销
void Destroy(LSNode **head)
{
LSNode *p=head,*p1;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
}
链式堆栈的关键是运用 **head, head头指针的作用与顺序堆栈的top相同,都是与头元素的坐标相关。需要注意的点在于初始化时,要对*head操作,所以要传入*head的地址值**head,同样,撤销时也需要对*head操作,传入**head。head指向头结点,再指向栈顶元素。
阅读全文
0 0
- 链式堆栈.c
- c 堆栈的链式存储
- C 堆栈的链式表示
- C/C++ 堆栈、队列的链式实现
- 堆栈链式实现入栈出栈等操作(C)
- 链式堆栈(C,JAVA分别实现)
- 链式堆栈——C语言实现
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 数据结构C语言实现系列——链式堆栈
- C语言面向对象——堆栈的链式存储
- 链式实现的堆栈
- 链式堆栈实现
- 泛型链式堆栈
- 链式堆栈的实现
- Linux目录及常用命令介绍(三)
- python小知识
- Linux电源管理(11)_Runtime PM之功能描述
- Page.IsPostBack
- 独家 | 大数据提升政府决策力的实践与案例分析(附PPT和视频)
- 链式堆栈.c
- Linux目录及常用命令介绍(四)
- 冷却系统成本消耗的软件Elite.Software.Audit.v7.02.26
- 简单的SKU实现
- Linux电源管理(10)_autosleep
- Linux 查看磁盘使用率
- webservice简介及发布自定义的服务
- leetcode_464. Can I Win ? 待解决
- 计算机语言新星:Kotlin