// Code file created by C Code Develop
// 顺序栈 #include "ccd.h"
#include "stdio.h"
#include "stdlib.h"
#define MaxSize 10
#define OK 1
#define ERROR 0
#define True 1
#define False 0 // 构造了伪bool类型
typedef int bool; typedef struct SqStack{
int data[MaxSize];
int top; //栈顶指针
} SqStack;
// typedef SqStack ; int main(int argc, char **argv)
{ SqStack S; //声明一个顺序栈(分配空间)
InitStack(&S);
printf("栈顶指针:%d\n", S.top);
int i = 99;
while(i != 0) {
printf("输入一个整数:(0结束)");
scanf("%d", &i);
if (i!= 0) {
shuchu(
push(&S, i)); //压栈
}}
view(S); //辅助函数为了查看栈中元素
// shuchu(StackEmpty(S));
int x = 0; Getytop(S, &x); // 读栈顶元素
view(S);
//pop(&S, &x); // 出栈一个元素
printf("出栈的元素是:%d\n", x);
view(S); printf("执行完毕"); return 0;
} void InitStack(SqStack *S) {
S -> top = - 1; //初始化栈顶指针
} bool StackEmpty(SqStack S) {
if(S.top == - 1)
return True; // 栈空
else
return False; // 非空
} bool push(SqStack *S, int x) {
if(S -> top == MaxSize - 1)
return False;
// S -> top = S -> top + 1; //指针加一
// S->data[S->top] = x; // 新元素入栈
S -> data[++S -> top] = x; //等价前两行
printf("栈顶指针是:%d\n", S -> top);
return OK;
} bool pop(SqStack *S, int *x) {
// 出栈
if(S -> top == - 1)
return false;
else printf("OK");
//printf("第%d个元素是:%d\n", i++, S.data[S.top]);
//int z;
// z = S -> top--;
//x = (S -> data[2]);
// x = S -> data[S -> top--];
// S -> top--;
return True;
}
bool Getytop(SqStack S, int *x) {
// 读栈顶元素
if(S.top == - 1) return False; // 栈空报错;
printf("栈顶元素是:%d\n", S.data[S.top]);
S.data[S.top];
return True;
} void view(SqStack S) {
// 此函数仅仅是为了显示栈中的元素,实际操作不允许,为非法操作
printf("此时栈中的元素是:\n");
for(int i = 0; S.top > - 1; S.top--) {
// 从栈顶依次查看栈中元素
printf("第%d个元素是:%d\n", i++, S.data[S.top]);
}
// printf("111111111111"); }
void shuchu(bool a) {
if (a) {
printf("操作成功"); }
else {
printf("操作失败FALSE"); }
}

栈—顺序栈(C实现)的更多相关文章

  1. 顺序栈,链栈,队列java实现

    顺序栈 /** * 顺序栈 * */ public class SqStack { //栈的大小 private int maxSize; //栈顶指针 private int top; privat ...

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

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

  3. n个元素的入栈顺序有多少种出栈顺序?

    问题:w1.w2.w3.w4.w5,5个元素将会按顺序入栈,求出栈顺序有多少种情况. 先写一下结论方便记忆: 1个元素:1种 2个元素:2种 3个元素:5种 4个元素:14种 5个元素:42种 简单的 ...

  4. 数据结构:C_顺序栈的实现

    数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...

  5. C语言 栈 顺序结构 实现

    一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译). /** * @brief C语言实现的顺序结构类型的栈 * @author wid * @date 2013-10-29 * ...

  6. D_S 顺序栈的基本操作

    //  main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...

  7. 数据结构Java实现05----栈:顺序栈和链式堆栈

    一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  8. n个元素进栈,共有多少种出栈顺序?

    1.基于栈的问题分析 我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出:                                   f(1) = 1     / ...

  9. YTU 3002: 出栈顺序(栈和队列)

    3002: 出栈顺序(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 80  解决: 20 题目描述 给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确. 输入 输入包含 ...

  10. [置顶] 栈/入栈/出栈顺序(c语言)-linux

    说明: 1.栈底为高地址,栈顶为低地址. 2.入栈顺序:从右到左. 解释1:栈在内存中的结构 [注:0x00 到 0x04之间间隔4个地址] 入栈:指针先指向0x10,从高地址向低地址方向填数值,最终 ...

随机推荐

  1. C# java 的 equals 与 == 的区别

    C# String a = "宜春"; String b = new String(new char[] { '宜', '春' }); String c = b; //注意这里是引 ...

  2. win10找回Ubuntu启动项(非EasyBCD)

    最近想对装在电脑上的Ubuntu进行更新,但是之前在BIOS里改了引导系统的文件,导致找不到Ubuntu启动项,EasyBCD程序也不起作用(整块硬盘Windows分区都是GPT,改BIOS也没什么用 ...

  3. 用Vue全家桶纯手工搓了一个开源版「抖音」

    前言 2018年刚入行前端时,公司使用的还是Angular.Angular什么都好,就是写代码时的体验老糟心了,改一个地方,按下保存之后,要等好几秒刷新后才能看到效果,Webstorm无比好用的自动保 ...

  4. redis安装和基础使用

    redis安装 mkdir /server/tools -p cd /server/tools echo 'PATH=/usr/local/redis/src:$PATH' >>/etc/ ...

  5. 系统镜像烧写及U-Boot编译

    1 系统镜像烧写 1.1 工具介绍 烧写软件:使用NXP的MfgTool2工具烧写,工具路径:[正点原子]阿尔法Linux开发板(A盘)-基础资料\05.开发工具\04.正点原子MFG_TOOL出厂固 ...

  6. Java中编译异常与运行异常的区别

    编译期异常和运行期异常的区别 编译期异常和运行期异常的区别如下 异常处理要求不同:编译期异常(也称为检测异常checked Exception)要求在代码中显式地处理(使用try-catch或者thr ...

  7. 终于搞懂了!原来vue3中template使用ref无需.value是因为这个

    前言 众所周知,vue3的template中使用ref变量无需使用.value.还可以在事件处理器中进行赋值操作时,无需使用.value就可以直接修改ref变量的值,比如:<button @cl ...

  8. linux系统下,搭建kafka环境(单机版)

    安装前准备: 安装JDK 安装zookeeper(如果使用kafka内置的zookeeper,可以忽略) 第一步.安装JDK kafka依赖JAVA环境,所以首先要安装jdk 第二步.安装zookee ...

  9. 使用 OpenTelemetry 构建可观测性 06 - 生态系统

    过去的五篇文章讨论了如何使用 OpenTelemetry 来构建可观测性的技术细节.我认为在本博文系列的结尾介绍有关 OTel 生态系统的信息,为读者提供更全面的了解非常重要.OpenTelemetr ...

  10. mongodb安装及启动配置文件,允许远程访问连接

    windows安装https://www.runoob.com/mongodb/mongodb-window-install.html https://www.runoob.com/mongodb/m ...