数据结构 栈 入栈 输出 出栈

#include<bits/stdc++.h>
/*
#include<iostream>
#include<>
*/
using namespace std;
//pA->p(Next)=pB->p(top)含义是pA指向pB
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);//不用返回值,遍历把栈s发就行
bool empty( PSTACK pS);
bool  pop(PSTACK,int*); //出栈,只要一个栈的地址就行 ,数值是*pVal要用指针传递,指针变量在栈中操作
//返回类型是什么,要是函数里面有输出,不用int,函数会有成功失败用bool int main()
{int val;STACK S; // 先造一个空栈 init(&S);//必须写s的地址,不然不能改变 push(&S,1);//入栈 push(&S,2);push(&S,3);traverse(&S);if( pop(&S,&val))//一定注意这是地址& {cout<<"出栈成功,值是:"<<val; }else{ cout<<"出栈失败"<<endl; }return 0;
} void init(PSTACK ps)//这是指针即地址
{//为什么结构体可以指向结构体内部成员:ps形参的数类型是PSACK栈指针 //造出一个点,把地址给pTop指针 即pS栈的pTop指向新的点 ps->pTop = (PNODE)malloc(sizeof(NODE));if( NULL==ps->pTop){cout<<"动态内存分配失败"<<endl;exit(-1); //直接终止 }else{//顶底指向了同一个头节点,这个头节点指针域是空 ps->pBottom=ps->pTop;//顺序不能反,底指向顶,即底也指向新的点 ps->pBottom->pNext =NULL;//ps所指向的pBtoom成员指向的指针域是空的 } ps->pBottom;}void push(PSTACK pS,int val)
{//先注意1pS是栈2pNew是新点的指针地址3指针域是->pNext//pA->p(Next)=pB->p(top)含义是pA指向pB //入栈,先造一个点PNODE pNew=(PNODE)malloc(sizeof(NODE)); pNew->data=val;//值存入新点 pNew->pNext=pS->pTop;//新点的指针域 指向未插入节点前 pS栈的顶,这里只能是toppS->pTop=pNew; //pS栈的top指针指向新的点 return;
}void traverse(PSTACK pS)
{//先定义一个指针p PNODE p= pS->pTop;while ( p!=pS->pBottom    ){cout<<p->data<<endl;p=p->pNext;//p后移 }return;
}//判断是否是空,要返回是否bool,要形参栈
bool empty( PSTACK pS)
{if( pS->pTop==pS->pBottom )return true;elsereturn false;
}//出栈即删除  把ps所指的栈出栈一次,并把出栈的元素存入pVal形参所指的变量中,出栈成功
bool  pop(PSTACK pS,int *pVal)
{if( empty(pS ) ) //要传地址,但ps本身就是指针即地址 return false;//不能出栈返回false,试试能不能输出 不能出栈 else//出栈即删除元素,先用新指针r把这个点保存起来,在top指向top下一个, free(r) {PNODE r=pS->pTop;  //造一个新指针r放现在的top *pVal=r->data;//*pVal是pval指向的变量,把r的值放入 pS->pTop=pS->pTop->pNext;//top指向top下一个free(r);//释放r r=NULL;//pBottom不用变,一直在底 return true;}}

结果

如果对你有帮助,请 点赞 支持一下

数据结构 栈 入栈 输出 出栈相关推荐

  1. C语言实现栈的进栈与出栈、输出栈顶元素、元素个数、销毁栈

    /********************************引入头文件**************************************************/ #include&l ...

  2. 栈与队列-之出栈和入栈

    ·栈的概念: -运算只在表的一端进行,一般线性表而言,插入删除都可以在任意一个位置进行的 ·队列:入栈和出栈只能分别在两端中的一边,就是说它在一端入队列,在另外一端当中去出队列.从某种意义上讲栈和队列 ...

  3. 已知入栈顺序求所有的出栈顺序已知出栈顺序求所有的入栈顺序

    一.已知入栈顺序求所有的出栈顺序 已知入栈顺序是{1,2,3,4,5},求所有的出栈顺序? 我的思路: 既然入栈顺序固定,我觉得可以使用递归来做. 先定义一个函数,比如说叫做help. //伪代码 v ...

  4. 给定入栈序列,判断出栈序列是否合法

    题目:分别给定入栈序列和出栈序列,然后判断出栈序列是否合法.如入栈序列是[1,3,2,4,5],出栈序列[3,1,2,4,5]是合法的,[3,1,5,2,4]是不合法的. 思路: 判断出栈序列是否合法 ...

  5. 数据结构栈的操作,初始化栈,进栈,出栈,读取栈顶元素;

    代码段: #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h ...

  6. 类C语言--栈与队列习题:设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常

    此代码可以正常运行,下附有运行区,是实实在在的类C语言 #include <stdio.h> #include <stdlib.h> #include<string.h& ...

  7. C语言 数据结构 顺序栈的实现 进栈 出栈 初始化

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.代码实现 前言 顺序栈是栈的顺序实现.顺序栈是指利用顺序存储结构实现的栈.采用地址连续的存储空间(数组)依次存储栈 ...

  8. 入栈顺序12345,出栈顺序有哪些可能?

    首先第一点,入栈12345不代表一次性先入5个,可能是入栈出栈交替进行. 例如:1入1出2入2出3入3出4入4出 所以可能性有: 1入2入3入4入5入5出4出3出2出1出 54321 1入2入3入4入 ...

  9. 已知入栈顺序,总结出栈顺序的规律

    规律: 出栈的每一个元素的后面,其中比该元素先入栈的一定按照入栈逆顺序排列. 举例说明: 已知入栈顺序: 1 2 3 4 5 判断出栈顺序: 4 3 5 1 2 结果:不合理,原因是出栈元素3之后有 ...

最新文章

  1. 一文详解AI模型部署及工业落地方式
  2. mysql录入foreigen错误_Python MySQLdb 使用utf-8 编码插入中文数据问题
  3. 华为5ipro详细参数使用功能_详细讲解双计双控智能电表技术参数以及新增功能优势...
  4. JavaWeb学习之路——SpringBoot搭建项目框架(一)
  5. __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
  6. jsTree通过json数据初始化时,如何控制每个选项的图标(icon)显示
  7. SAP S/4HANA生产订单状态含义
  8. python期末设计作品_期末作品检查
  9. echarts怎么保存图片到剪切板上_在电脑上怎么批量给图片编号以及怎么自动记录记事本txt文档时间...
  10. 在vue中安装使用vux
  11. 位换记号、排列测试与状态图:杂耍中的数学
  12. docker 拉取oracle_Docker 拉取 oracle 11g镜像配置-Go语言中文社区
  13. JAVA仿真之银行出纳员
  14. Rust之字符串,元组,数组,切片,打印优化
  15. 用PPT直接修改主集成模板,并保存为pps格式,即可现场展示应用.
  16. hana SQL函数
  17. 输出英文字母ch在英文字母表中的位置
  18. Cocos2d-x之TileMap
  19. 如何把word转成pdf格式以及如何从指定页开始设置页码技巧
  20. Python爬取百度指数搜索结果,查看你想了解的热点信息吧

热门文章

  1. 历史上最全最常用的HTTP状态码(超详细)
  2. Nagios安装与部署
  3. python读取xml文件内容_selenium-python读取XML文件
  4. tgp饥荒服务器令牌文件,TGP饥荒专用服务器创建地表及洞穴方法介绍
  5. 判断素数及其算法优化
  6. 1050Ti + win10 + 虚拟机 + ubuntu18.04
  7. 重磅!超详细图解Self-Attention!
  8. 统一延长复工,带薪休假,几十万中小微企业面临的困境
  9. 15、DOM常见的操作方式
  10. python无师自通韩国语_《无师自通韩国语》第18-20课