// 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. 面试题--mysql的数据库优化

    mysql的数据库优化 当有人问你如何对数据库进行优化时,很多人第一反应想到的就是 SQL 优化,如何创建索引,如何改写 SQL,他们把数据库优化与 SQL 优化划上了等号. 当然这不能算是完全错误的 ...

  2. quartzui 的界面管理

    基于Quartz.NET3.0的定时任务Web可视化管理.docker打包开箱即用.内置SQLite持久化.语言无关.业务代码零污染.支持 RESTful风格接口.傻瓜式配置 quartzuiquar ...

  3. 【进阶篇】使用 Stream 流对比两个集合的常用操作分享

    目录 前言 一.集合的比较 1.1需要得到一个新的流 1.2只需要一个简单 boolean 结果 二.简单集合的对比 2.1整型元素集合 2.2字符串元素集合 2.3其它比较 三.Stream 基础回 ...

  4. PHP 中使用 ElasticSearch 的最佳实践 (中)

    引言 在上一篇文章当中,我们介绍了如何在 ElasticSearch 中创建索引以及建立字段映射关系. 接下来的这篇文章,我们将在 Laravel 中对商品信息进行增删改查及搜索. 记得 Elasti ...

  5. ClickHouse 初步认识

    概述 Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表.它免费开源.具备高效的数据导入和查询性能,能达到 50M/200M 每秒.支持实时查询.支持不同功能底层存储引擎,例如:M ...

  6. Android OpenMAX(八)如何学习OMXNodeInstance

    前面一篇文章中我们看到media.codec service创建OMX组件后会把组件传递给一个OMXNodeInstance对象,并且把OMXNodeInstance对象返回到Framework层,F ...

  7. 如何在Windows上一键部署PaddleOCR的WebAPI服务

    PaddleOCR旨在打造一套丰富.领先.且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地. 官方​开源项目地址:PaddlePaddle/PaddleOCR: Awesome multi ...

  8. 7.18考试总结(NOIP模拟19)[u·v·w]

    我们不是狼,我们只是长着獠牙的羊...... 前言 我真 TM 爱死 \(\frac{1}{4}\) 了. 老实说,这套题是真恶心,第一题还有一点思路,到了后面是一点都搞不定了. 总的来说,主要原因是 ...

  9. itestwork(爱测试)开源一站式接口测试&敏捷测试工作站 9.0.0 GA 发布,重大升级

    (一)itest 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷.itest work 包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1 ...

  10. umask永久修改用户创建文件权限

    Linux里永久设置用户创建文件权限的配置文件是/etc/profile.可以在该文件中添加umask命令来设置默认权限.具体操作步骤如下: 打开/etc/profile文件:sudo vi /etc ...