C语言栈的演示(入栈,弹栈,遍历)
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>typedef struct Node
{int data;
struct Node * pNext;
}NODE,* PNODE;
typedef struct Stack
{
PNODE pTop;
PNODE pBottom;
}STACK, * PSTACK;void init(PSTACK);//初始化栈
void push(PSTACK,int);// 入栈
void traverse(PSTACK);//遍历
bool empty(PSTACK);//是否为空
bool pop(PSTACK,int *);//弹栈
void clear(PSTACK);//清空栈 int main(void)
{
STACK S;
int val;init(&S);
push(&S,1);
push(&S,2);push(&S,3);push(&S,4);traverse(&S);if(pop(&S,&val)){printf("弹栈成功,弹出的数据是%d\n",val);}else{printf("弹栈失败!");}clear(&S);traverse(&S);return 0;
}
//初始化栈
void init(PSTACK pS)
{pS->pTop=(PNODE)malloc(sizeof(NODE));if(pS->pTop==NULL){printf(" 动态内存分配失败!\n");exit(-1);}else{pS->pBottom=pS->pTop;pS->pTop->pNext=NULL; }
}
//入栈
void push(PSTACK pS,int value)
{PNODE pNew=(PNODE)malloc(sizeof(NODE));pNew->data=value;pNew->pNext=pS->pTop;pS->pTop=pNew;return;
}
//遍历
void traverse(PSTACK pS)
{
PNODE P=pS->pTop;
while(P !=pS->pBottom)
{
printf("%d ",P->data);
P=P->pNext;
}
printf("\n");
return;
}//判断栈是否为空
bool empty(PSTACK pS)
{
if(pS->pTop==pS->pBottom)
{
return true;
}else{
return false;
}
}
//弹栈
bool pop(PSTACK pS,int * val)
{if(empty(pS))
{
return false;
}else
{
PNODE R=pS->pTop;
pS->pTop=pS->pTop->pNext;
*val=R->data;
free(R);
R=NULL; return true;
}
}//清空栈中数据void clear(PSTACK pS){if(empty(pS)){return;}else{PNODE p=pS->pTop;PNODE q=NULL;while(p!=pS->pBottom){q=p->pNext;free(p);p=q;}
pS->pTop=pS->pBottom;}}
C语言栈的演示(入栈,弹栈,遍历)相关推荐
- 剑指offer:面试题31. 栈的压入、弹出序列
题目:栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 ...
- 【数据结构】栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等,例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列 ...
- 牛客网 栈的压入、弹出序列
链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 来源:牛客网 [编程题]栈的压入.弹出序列 ...
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
- 《剑指offer》第三十一题(栈的压入、弹出序列)
// 面试题31:栈的压入.弹出序列 // 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是 // 否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4. / ...
- 剑指Offer 31 栈的压入、弹出序列
栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2 ...
- [剑指offer]面试题22:栈的压入、弹出序列
面试题22:栈的压入.弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5 是某栈的压栈序列,序 ...
- 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列
[LeetCode]剑指 Offer 31. 栈的压入.弹出序列 文章目录 [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 package offer;import java.uti ...
- 剑指offer——31.栈的压入、弹出序列(想法不错,比剑指的简单)
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...
- 剑指offer——面试题22:栈的压入、弹出序列
剑指offer--面试题22:栈的压入.弹出序列 Solution1: 要理解并背诵此题! 参考网址: https://www.cnblogs.com/AndyJee/p/4651281.html h ...
最新文章
- Linux操作系统下利用SSH进行远程控制
- alot英文怎么读_【乐学】“原来如此”用英文怎么说?
- Python探索记(10)——字符串(下)
- mysql存储过程中in条件多个值,使用临时表解决
- Eclipse Photon即将发布
- 淘宝全屏代码天猫首页全屏代码不显示全屏怎么做设置自适应通栏990布局 全屏代码1920
- HTML CSS JS 网页设计作业「我的家乡吉林」
- igraph入门教程
- 网站 被降权的四种处理方法
- QT 基础知识一(QT安装、创建项目、常用窗口控件使用、信号与槽机制讲解)
- 腾讯 Code Review 规范出炉!
- 关于Verilog 写法
- win7原版镜像_告诉你Ghost系统和原版系统之间的区别,看完再装机也不晚
- google 云开启 ssh 账号密码登录
- 游戏厂商出海记:韩国内卷严重,其它地区占到什么地盘?
- 戴尔 服务器重装后蓝屏,dell笔记本不能重装系统,一直进入蓝屏界面?
- 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】
- 第八章 对立统一——异步时钟同步化
- 电力电子产品结构设计培训
- 怎么开发联机小游戏_惊!!!个人游戏开发者的福音来了!