Code

/*顺序表实现栈的一系列操作*/ #include<stdio.h>
#include<stdlib.h> #define Stack_Size 50             //设栈中元素个数为50
#define OK 1
#define ERROR 0typedef struct
{int elem[Stack_Size];          //用来存放栈中元素的一维数组 int top;                       //用来存放栈顶元素的下标,top为 -1 表示空栈
}SeqStack;/**********************各个子函数的定义*********************/
int initStack(SeqStack *S);         //初始化顺序栈
void push(SeqStack *S,int n);          //顺序栈进栈运算
void pop(SeqStack *S);                //顺序栈出栈运算
int getTop(SeqStack *S,int *s);     //读取栈顶元素 int main()
{SeqStack *S;int choice;while(true){printf("*****************Please enter your choice*****************\n\n");printf("                choice 1:Stack initialization\n");printf("                choice 2:Into the stack\n");printf("                choice 3:Out of the stack\n");printf("                choice 4:Read the stack elements\n");printf("                choice 0:exit\n\n");scanf("%d",&choice);switch(choice){case 1:(initStack(S)==1)?printf("initStck success.\n"):printf("initStack ERROR\n");break;case 2:int n;printf("Please enter the number into the stack elements:");scanf("%d",&n);push(S,n);break;case 3:pop(S);break;case 4:int* s;(getTop(S,s)==1)? printf("栈顶元素是:%d.\n",*s):printf("An empty stack error!!!!\n"); //三目运算符break;        case 0:exit(0);break;default:printf("ERROR!!\n");exit(0);break;}}return 0;
} /**********************各个子函数功能的实现*********************/
int initStack(SeqStack *S)    //初始化顺序栈
{         if(S!=NULL){S->top=-1;             //置为空栈 return OK;}else return ERROR;        //内存空间不足
}
void push(SeqStack *S,int n)  //进栈 ,将元素压入栈中
{   int n1,n2;if(((S->top)+n)<=Stack_Size-1)   //压入栈中的元素不能超过栈的最大存储
    {  printf("Please enter into the stack elements in turn:\n");  for(n1=0;n1<n;n1++){scanf("%d",&n2);S->top++;                    //移动栈顶指针 S->elem[S->top]=n2;}printf("%d个元素依次进栈成功\n",n);}else{                    //栈空间不够 printf("ERROR There is insufficient space on the stack.\n");            }
}
void pop(SeqStack *S)
{     //栈顶元素出栈 int a;if(S->top==-1){               //栈为空,操作失败 printf("An empty stack error!!!!\n");}else{a=S->elem[S->top];S->top--;printf("栈顶元素%d出栈成功.\n",a);  //出栈成功
    }  }
int getTop(SeqStack *S,int *s)   //获取栈顶元素
{    if(S->top==-1){               //栈为空,操作失败 return ERROR;}else{*s=S->elem[S->top];   //读取栈顶元素成功 return OK;}
}

转载于:https://www.cnblogs.com/qftm/p/10317155.html

C语言实现顺序栈的初始化进栈出栈读取栈顶元素相关推荐

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

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

  2. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...

    目前,处在学习数据结构+ing,由于之前学过了队列,今天就把自己写过的代码做了一些完善分享给大家,希望能够帮助到有需要的朋友,有不足的地方欢迎大家交流    φ(゜▽゜*)♪ 队列是另一种限定性的线性 ...

  3. c语言while队列不为空,C语言实现循环队列的初始化进队出队读取队头元素判空-2...

    /*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include #include #define Queue_Size 50 //队列的最大长度 #define OK 1 #d ...

  4. C语言试题三十五之找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

    1. 题目 请编写一个函数function,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回.主函数中x是数组名,n 是x中的数据个数,max存放最大值,i ...

  5. 数据结构遍历顺序栈_链栈的初始化与遍历

    初始化 我们在定义完一个数据结构的结构体之后,需要初始化才能使用.比如顺序栈的初始化,也就是构造一个空栈就行了.那么链栈如何初始化呢? 链栈初始化的目标也是要构造一个空栈.根据结构体定义,空栈是什么一 ...

  6. C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)

    //顺序栈的基本操作 #include<stdio.h> #define MaxSize 50 typedef int ElemType; //定义栈结构体 typedef struct ...

  7. c语言中初始化的主要作用,C语言初始化——栈的初始化

    栈是一种具有后进先出性质的数据组织方式,也就是说后存放的先取出,先存放的后取出.栈底是第一个进栈的数据所处的位置,栈顶是最后一个进栈的数据所处的位置. 1.满栈与空栈 根据SP指针指向的位置,栈可以分 ...

  8. 实现顺序栈的各种基本运算的算法C语言,实现顺序栈的各种基本运算的算法

    试编写一个算法,让两个顺序栈共用一个数组stack[N]试编写一个算法,让两个顺序栈共用一个数组stack[N],分别实现入栈\出栈操要2个栈公用一个存储空间看来栈顶指针只能从两端开始了(和队列有点像 ...

  9. C语言实现顺序栈心得

    栈的构成及初始化 对于"先进后出"的顺序栈,需要控制3个量:栈元素,栈顶指针,栈容量. 栈容量即栈的最大容量,若超过会产生溢出错误.当然,必要时也可以扩充容量. 栈元素可以通过动态 ...

  10. c语言栈的实现以及操作_C++语言实现顺序栈

    在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以看看之前的文章,下面是链接C语言实现顺序栈在这 ...

最新文章

  1. jmeter操作练习
  2. LINUX 使用tcgetattr函数与tcsetattr函数控制终端五
  3. 什么样的鼠标对程序员最有用,超级提高开发效率
  4. 最接近原点的 k 个点_第K个最接近原点的位置
  5. c语言找出递增子数组的长度,编程之美2.16 数组中最长递增子序列的长度
  6. POJ 1986:Distance Queries(倍增求LCA)
  7. Android变量longpress,Android:在自定义WebView中从onLongPress打开ContextMenu
  8. java同类型同字段名称对象赋值
  9. 怎么windows升级?windows版本升级?
  10. 谷歌母公司2019Q1财报出炉,营收增速放缓,盘后大跌7.34%,市值蒸发700亿刀
  11. Windows 11 新功能:管理蓝牙设备将不再困难
  12. 对文件夹添加共享属性!
  13. unity中移动的九种方法
  14. 液晶拼接大屏的日常维护与保养
  15. UVALive 6959 - Judging Troubles
  16. 正则表达式(regex,RE)
  17. springboot请求put请求
  18. 形参和实参的储存单元是否一致?
  19. VBA dictionary的用法
  20. 休闲娱乐之和成熟的男生谈恋爱

热门文章

  1. JupyterHub on Kubernetes绘图支持软件
  2. 利用Onionshare 共享匿名文件
  3. 古老的版本管理器---P4客户端配置流程,操作总结
  4. jquer添加和插入元素技巧:
  5. 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
  6. 运维人员如何学好shell脚本编程
  7. CentOS6.2安装LAMP+DRUPAL网站(1)
  8. Linux系统用户账号的管理
  9. 提取HTML代码中的网址
  10. eclipse 查看变量或方法被调用的快捷键