#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语言栈的演示(入栈,弹栈,遍历)相关推荐

  1. 剑指offer:面试题31. 栈的压入、弹出序列

    题目:栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 ...

  2. 【数据结构】栈的压入、弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等,例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列 ...

  3. 牛客网 栈的压入、弹出序列

    链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 来源:牛客网 [编程题]栈的压入.弹出序列 ...

  4. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  5. 《剑指offer》第三十一题(栈的压入、弹出序列)

    // 面试题31:栈的压入.弹出序列 // 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是 // 否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4. / ...

  6. 剑指Offer 31 栈的压入、弹出序列

    栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2 ...

  7. [剑指offer]面试题22:栈的压入、弹出序列

    面试题22:栈的压入.弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5 是某栈的压栈序列,序 ...

  8. 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列

    [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 文章目录 [LeetCode]剑指 Offer 31. 栈的压入.弹出序列 package offer;import java.uti ...

  9. 剑指offer——31.栈的压入、弹出序列(想法不错,比剑指的简单)

    题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  10. 剑指offer——面试题22:栈的压入、弹出序列

    剑指offer--面试题22:栈的压入.弹出序列 Solution1: 要理解并背诵此题! 参考网址: https://www.cnblogs.com/AndyJee/p/4651281.html h ...

最新文章

  1. Linux操作系统下利用SSH进行远程控制
  2. alot英文怎么读_【乐学】“原来如此”用英文怎么说?
  3. Python探索记(10)——字符串(下)
  4. mysql存储过程中in条件多个值,使用临时表解决
  5. Eclipse Photon即将发布
  6. 淘宝全屏代码天猫首页全屏代码不显示全屏怎么做设置自适应通栏990布局 全屏代码1920
  7. HTML CSS JS 网页设计作业「我的家乡吉林」
  8. igraph入门教程
  9. 网站 被降权的四种处理方法
  10. QT 基础知识一(QT安装、创建项目、常用窗口控件使用、信号与槽机制讲解)
  11. 腾讯 Code Review 规范出炉!
  12. 关于Verilog 写法
  13. win7原版镜像_告诉你Ghost系统和原版系统之间的区别,看完再装机也不晚
  14. google 云开启 ssh 账号密码登录
  15. 游戏厂商出海记:韩国内卷严重,其它地区占到什么地盘?
  16. 戴尔 服务器重装后蓝屏,dell笔记本不能重装系统,一直进入蓝屏界面?
  17. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】
  18. 第八章 对立统一——异步时钟同步化
  19. 电力电子产品结构设计培训
  20. 怎么开发联机小游戏_惊!!!个人游戏开发者的福音来了!

热门文章

  1. lua中的闭包(closure或者匿名函数)的作用
  2. Node获取服务器信息
  3. 跟Excel say bye bye! 视觉化分析掌握财务报表重点
  4. JavaScript写横向二级导航
  5. 超声波传感器(单介绍超声波)
  6. python 开发培训视频教程
  7. 概率统计之——方差分析
  8. Oulu-CASIA WebFace and FER database
  9. 那些最好的轮子 - PHP篇
  10. mac上的ssh连接工具