数据结构:链栈部分函数实现
数据结构 实现 函数 部分
2023-09-27 14:22:47 时间
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct stacknode
{
DataType data;
struct stacknode *next;
}LinkStack;
LinkStack *InitStack()
{
LinkStack *S;
S = NULL;
return S;
}
int EmptyStack(LinkStack *S)
{
if(S == NULL){
return 1;
}else{
return 0;
}
}
LinkStack *Push(LinkStack *S , DataType x)
{
LinkStack *P;
P = (LinkStack*)malloc(sizeof(LinkStack));
P->data = x;
P->next = S;
S = P;
return S;
}
LinkStack *Pop(LinkStack *S , DataType *x)
{
LinkStack *P;
if(EmptyStack(S)){
printf("\t栈空,不能出栈!");
return NULL;
}else{
*x = S->data;
P = S;
S = S->next;
free(P);
return S;
}
}
int GetTop(LinkStack *S , DataType *x)
{
if(EmptyStack(S)){
printf("栈空!");
return 0;
}else{
*x = S->data;
return 1;
}
}
void ShowStack(LinkStack *S)
{
LinkStack *p = S;
if(p == NULL){
printf("\t栈空\n");
}else{
printf("从栈顶起个元素为:");
while(p!=NULL){
printf("%d",p->data );
p = p->next;
}
}
}
int main()
{
LinkStack *S;
S = InitStack();
printf("初始化成功!\n");
int i , n , x;
if(EmptyStack(S)){
printf("栈空\n");
}
printf("请输入入栈元素的个数:");
scanf("%d",&n);
printf("请输入%d个整数进行入栈:",n);
for(i = 0 ; i < n ; i++){
scanf("%d",&x);
S = Push(S,x);
}
S = Pop(S , &x);
if(S != NULL){
printf("%5d",x);
}
if(GetTop(S,&x)){
printf("栈顶元素为:%d",x);
}
ShowStack(S);
return 0;
}
相关文章
- 数据结构拾遗(3) --红黑树的设计与实现(下)
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- Redis(十二)-Redis的数据结构之跳表
- C/C++数据结构(六) —— 循环队列
- [数据结构与算法]二叉排序(搜索)树实现
- 王道数据结构【栈队列及其应用】部分代码实现(C语言)
- JavaScript数据结构——图的实现
- FFMPEG-数据结构解释(AVCodecContext,AVStream,AVFormatContext)
- 【数据库技术】MySQL索引背后的数据结构及算法原理
- 【数据结构与算法】用 golang 实现 LSM Tree 算法代码
- 10-7-快速排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 【数据结构】树——二叉搜索树(C++)
- 数据结构(C语言版)实现链栈的创建,赋值随机数,进栈,出栈,取栈顶元素,输出
- 数据结构作业集合
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(中)
- 数据结构 线性表(双向链表)C语言实现
- Redis数据结构(二)-List、Hash、Set及Sorted Set的结构实现
- 【数据结构】顺序栈与链表栈
- 数据结构之链式队列(C实现)
- 【数据结构】动态顺序表的增删查改实现
- 基础数据结构——利用两个栈实现一个队列
- 【算法与数据结构系列】判断质数