数据结构——堆栈的C语言实现
1.什么叫堆栈?
2.堆栈的数据类型描述
3.堆栈顺序存储的C语言实现
#include<stdio.h>
#include<stdlib.h>#define MaxSize 10
#define ERROR -1
#define ElementType int
typedef struct SNode *Stack;
struct SNode{ElementType Data[MaxSize];int Top;
};Stack PtrS;
//1.初始化
Stack MakeEmpty()
{Stack PtrS;PtrS = (Stack)malloc(sizeof(struct SNode));PtrS->Top=-1;return PtrS;
}//2.入栈
void Push(ElementType item,Stack PtrS)
{if(PtrS->Top==MaxSize){printf("栈已满\n");return;}else{PtrS->Data[++(PtrS->Top)]=item;return;}
}//3.出栈
ElementType Pop(Stack PtrS)
{if(PtrS->Top==-1){printf("栈为空\n");return ERROR;}else{return PtrS->Data[(PtrS->Top)--];}
}int main()
{int i;PtrS=MakeEmpty();Push(23,PtrS);Push(28,PtrS);Push(78,PtrS);for(i=0;i<=PtrS->Top;i++ ){printf("%d ",PtrS->Data[i]);}printf("\n");printf("出栈为:%d\n",Pop(PtrS));for(i=0;i<=PtrS->Top;i++ ){printf("%d ",PtrS->Data[i]);} printf("\n");return 0;
}
4.堆栈链式存储的C语言实现
#include<stdio.h>
#include<stdlib.h>#define ElementType int
typedef struct SNode *Stack;
struct SNode{ElementType Data;Stack Next;
};
Stack PtrS;//1.初始化
Stack MakeEmpty()
{Stack PtrS;PtrS = (Stack)malloc(sizeof(struct SNode));PtrS->Next=NULL;return PtrS;
}//2.判断堆栈是否为空,空为1,不空为0
int IsEmpty(Stack PtrS)
{return (PtrS->Next==NULL);
}//3.入栈
void Push(ElementType item,Stack PtrS)
{Stack TmpCell;TmpCell = (Stack)malloc(sizeof(struct SNode));TmpCell->Data=item;TmpCell->Next=PtrS->Next;PtrS->Next=TmpCell;
}//4.出栈
ElementType Pop(Stack PtrS)
{ElementType TopElement;Stack FirstCell;if(IsEmpty(PtrS)){printf("栈为空\n");return 0;}else{FirstCell=PtrS->Next;PtrS->Next=FirstCell->Next;TopElement=FirstCell->Data;free(FirstCell);return TopElement;}
}int main()
{int i;PtrS=MakeEmpty();Push(41,PtrS);printf("%d\n",PtrS->Next->Data);Push(14,PtrS);Push(67,PtrS);Stack S=PtrS;for(i=0;i<3;i++){S=S->Next;printf("%d ",S->Data);}printf("\n");Stack S2=PtrS;printf("出栈为:%d\n",Pop(S2));for(i=0;i<2;i++){S2=S2->Next;printf("%d ",S2->Data);}printf("\n");return 0;
}
数据结构——堆栈的C语言实现相关推荐
- 【数据结构-堆栈(顺序存储)GO语言实现】
[数据结构-堆栈(顺序存储)GO语言实现] 顺序存储的堆栈可以看作是一个操作被限制的数组,遵循着后进先出**(LIFO)**的原则. 顺序存储的堆栈代码arrayStack.go package st ...
- 数据结构堆栈 内存堆栈_了解堆栈数据结构
数据结构堆栈 内存堆栈 In this article, we'll be understanding the working and the need for the Stack Data Stru ...
- 数据结构堆栈 内存堆栈_零堆栈数据科学家第二部分秋天
数据结构堆栈 内存堆栈 In Hollywood, it is known that the sequels are rarely better than the original movie/par ...
- 数据结构python课后答案_数据结构与算法:Python语言描述 1~5章课后习题
数据结构与算法:Python语言描述 1~5章课后习题 发布时间:2018-07-19 20:42, 浏览次数:1885 , 标签: Python MarkDown语法写的,不知道为啥上传到CSDN不 ...
- 《数据结构与算法 C语言版》—— 3.8习题
本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...
- 《数据结构与算法 C语言版》—— 2.5上机实验
本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...
- 《数据结构与算法 C语言版》—— 2.7习题
本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...
- 数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss
数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss 可用于自学数据结构与算法,数据结构与算法分析对于C++的学习至关重要,应该努力掌握好! 百度网盘: 链接:https://p ...
- python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...
ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...
最新文章
- nsis帮助文档_使用NSIS打包程序
- u盘驱动 内核代码阅读 2.6.11.12版本
- android 上下扫描动画,Android扫描雷达动画
- 洛谷2015 二叉苹果树 树形DP
- angular4设置全局变量_angularjs 设置全局变量的7种方法
- 变量是否在数组内c语言,函数内创建的数组在调用后,是否就不存在
- 【粉丝需求】如何把一个前端网页都搞下来?
- 做网络需要掌握的56句话
- 《Act with Prudence》读后感
- Tomcat服务器内存修改
- java enum private_初步理解Java枚举类型
- Python学习笔记一(Python数据类型)
- sql 结果相加_SQL联结语句
- 搭建python本地源
- KL散度、JS散度和交叉熵
- 三极管放大电路的基本原理
- 2022年帝国CMS7.5内核精仿《5288商机网》二次开发多个功能,运营级
- SoftICE使用(2)-网络远程调试zz xfocus
- 硬盘/分区克隆:怎么无损迁移老硬盘数据到新硬盘?
- 巨富笔记:上者劳人,中者劳智,下者劳力
热门文章
- 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)
- LeetCode MySQL 1211. 查询结果的质量和占比
- LeetCode 1469. 寻找所有的独生节点
- LeetCode 1165. 单行键盘(哈希)
- 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)
- LeetCode 143. 重排链表(链表反转+快慢指针)
- mysql正则表达式配置_G. MySQL正则表达式
- fileinputstream_Java I/O 流之 FileInputStream
- Python设计模式之模板方法模式实例详解
- 怎么画单极交流放大电路波形图_区别在哪?:VCC、VDD、VEE、VSS、数字地、模拟地、信号地、交流地、直流地!...