Code

/*顺序表实现栈的一系列操作*/ 

#include<stdio.h>
#include<stdlib.h> #define Stack_Size 50 //设栈中元素个数为50
#define OK 1
#define ERROR 0 typedef 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 :
(initStack(S)==)?printf("initStck success.\n"):printf("initStack ERROR\n");
break;
case :
int n;
printf("Please enter the number into the stack elements:");
scanf("%d",&n);
push(S,n);
break;
case :
pop(S);
break;
case :
int* s;
(getTop(S,s)==)? printf("栈顶元素是:%d.\n",*s):printf("An empty stack error!!!!\n"); //三目运算符
break;
case :
exit();
break;
default:
printf("ERROR!!\n");
exit();
break;
}
}
return ;
} /**********************各个子函数功能的实现*********************/
int initStack(SeqStack *S) //初始化顺序栈
{
if(S!=NULL)
{
S->top=-; //置为空栈
return OK;
}
else return ERROR; //内存空间不足
}
void push(SeqStack *S,int n) //进栈 ,将元素压入栈中
{
int n1,n2;
if(((S->top)+n)<=Stack_Size-) //压入栈中的元素不能超过栈的最大存储
{
printf("Please enter into the stack elements in turn:\n");
for(n1=;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==-)
{ //栈为空,操作失败
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==-)
{ //栈为空,操作失败
return ERROR;
}
else
{
*s=S->elem[S->top]; //读取栈顶元素成功
return OK;
}
}

C语言实现顺序栈的初始化&进栈&出栈&读取栈顶元素的更多相关文章

  1. C语言实现链栈的初始化&进栈&出栈&读取栈顶元素

    /*链表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typede ...

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

    /*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Si ...

  3. C语言实现顺序栈

    C语言实现顺序栈,顺便加深刻++i,++i的区别 #include <stdio.h>#include <stdlib.h>#define maxsize 100/*写在前面的 ...

  4. C++语言实现顺序栈

    C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...

  5. C语言实现顺序栈以及栈的特点

    什么是栈? 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如下图所示. 从上图我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 ...

  6. C语言初始化——栈的初始化

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

  7. 数据结构(C语言版)顺序栈相关算法的代码实现

    这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...

  8. [实战演练]Intel面试题目 - 进栈出栈顺序问题

    电话面试中写C++,逻辑比较清楚的一个题目,一紧张就不能好好地写下来,漏洞百出.以前经常在完善的编译环境中写代码,换了一个白板子上写反而写的不通顺了,犯了一些基础错误,比如stack中的首个元素是to ...

  9. C语言数据结构-链式栈的实现-初始化、销毁、长度、取栈顶元素、查找、入栈、出栈、显示操作

    1.数据结构-链式栈的实现-C语言 //链式栈的链式结构 typedef struct StackNode { int data; struct StackNode *next; } StackNod ...

随机推荐

  1. vue定义全局组件

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...

  2. NOIP2008 立体图

    题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每 ...

  3. HBase shell scan 过滤器用法总结

    比较器: 前面例子中的regexstring:2014-11-08.*.binary:\x00\x00\x00\x05,这都是比较器.HBase的filter有四种比较器: (1)二进制比较器:如’b ...

  4. jdk12+tomcat9 配置

    jdk12 没有了jre的配置   直接配置path就可以了 tomcat常规配置,只是启动的时候麻烦一点   需要重新写入jdk jre jvm 到server.bat文件 参考文章: https: ...

  5. XP Sp3 开机就要激活,否则无法登录windows桌面

    参考网页:https://www.reddit.com/r/sysadmin/comments/5m9240/activating_windows_xp_in_2017_still_possible/ ...

  6. 非vue-cli的花括号闪现问题

    <div id="app" v-cloak></div>[v-cloak] { display: none;}这种方式可以解决网速较慢,vue.js文件还没 ...

  7. 不高兴的o( ̄ヘ ̄o#)JJ

    题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴.但是津津如果一天上课超过八个小时就会不高兴,而 ...

  8. 编写程序,输入一个N,返回角谷变换(达到1所需)的次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 17:36 * @description ...

  9. Floyd算法解决多源最短路问题

    说好的写dijkstra 算法堆优化版本的,但是因为,妹子需要,我还是先把Floyd算法写一下吧!啦啦啦! 咳咳,还是说正事吧! ----------------------------------- ...

  10. request.getRequestDispatcher跳转jsp页面失败

    我在JS里面写了个Ajax,传值给控制器,然后利用request.getRequestDispatcher(),打算跳转至另外一个页面.但是没有跳转成功,运行之后没反应. 在网上搜了资料发现,利用aj ...