栈—顺序栈(C实现)
// 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实现)的更多相关文章
- 顺序栈,链栈,队列java实现
顺序栈 /** * 顺序栈 * */ public class SqStack { //栈的大小 private int maxSize; //栈顶指针 private int top; privat ...
- C++语言实现顺序栈
C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...
- n个元素的入栈顺序有多少种出栈顺序?
问题:w1.w2.w3.w4.w5,5个元素将会按顺序入栈,求出栈顺序有多少种情况. 先写一下结论方便记忆: 1个元素:1种 2个元素:2种 3个元素:5种 4个元素:14种 5个元素:42种 简单的 ...
- 数据结构:C_顺序栈的实现
数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...
- C语言 栈 顺序结构 实现
一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译). /** * @brief C语言实现的顺序结构类型的栈 * @author wid * @date 2013-10-29 * ...
- D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- n个元素进栈,共有多少种出栈顺序?
1.基于栈的问题分析 我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出: f(1) = 1 / ...
- YTU 3002: 出栈顺序(栈和队列)
3002: 出栈顺序(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 80 解决: 20 题目描述 给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确. 输入 输入包含 ...
- [置顶] 栈/入栈/出栈顺序(c语言)-linux
说明: 1.栈底为高地址,栈顶为低地址. 2.入栈顺序:从右到左. 解释1:栈在内存中的结构 [注:0x00 到 0x04之间间隔4个地址] 入栈:指针先指向0x10,从高地址向低地址方向填数值,最终 ...
随机推荐
- 面试题--mysql的数据库优化
mysql的数据库优化 当有人问你如何对数据库进行优化时,很多人第一反应想到的就是 SQL 优化,如何创建索引,如何改写 SQL,他们把数据库优化与 SQL 优化划上了等号. 当然这不能算是完全错误的 ...
- quartzui 的界面管理
基于Quartz.NET3.0的定时任务Web可视化管理.docker打包开箱即用.内置SQLite持久化.语言无关.业务代码零污染.支持 RESTful风格接口.傻瓜式配置 quartzuiquar ...
- 【进阶篇】使用 Stream 流对比两个集合的常用操作分享
目录 前言 一.集合的比较 1.1需要得到一个新的流 1.2只需要一个简单 boolean 结果 二.简单集合的对比 2.1整型元素集合 2.2字符串元素集合 2.3其它比较 三.Stream 基础回 ...
- PHP 中使用 ElasticSearch 的最佳实践 (中)
引言 在上一篇文章当中,我们介绍了如何在 ElasticSearch 中创建索引以及建立字段映射关系. 接下来的这篇文章,我们将在 Laravel 中对商品信息进行增删改查及搜索. 记得 Elasti ...
- ClickHouse 初步认识
概述 Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表.它免费开源.具备高效的数据导入和查询性能,能达到 50M/200M 每秒.支持实时查询.支持不同功能底层存储引擎,例如:M ...
- Android OpenMAX(八)如何学习OMXNodeInstance
前面一篇文章中我们看到media.codec service创建OMX组件后会把组件传递给一个OMXNodeInstance对象,并且把OMXNodeInstance对象返回到Framework层,F ...
- 如何在Windows上一键部署PaddleOCR的WebAPI服务
PaddleOCR旨在打造一套丰富.领先.且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地. 官方开源项目地址:PaddlePaddle/PaddleOCR: Awesome multi ...
- 7.18考试总结(NOIP模拟19)[u·v·w]
我们不是狼,我们只是长着獠牙的羊...... 前言 我真 TM 爱死 \(\frac{1}{4}\) 了. 老实说,这套题是真恶心,第一题还有一点思路,到了后面是一点都搞不定了. 总的来说,主要原因是 ...
- itestwork(爱测试)开源一站式接口测试&敏捷测试工作站 9.0.0 GA 发布,重大升级
(一)itest 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷.itest work 包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1 ...
- umask永久修改用户创建文件权限
Linux里永久设置用户创建文件权限的配置文件是/etc/profile.可以在该文件中添加umask命令来设置默认权限.具体操作步骤如下: 打开/etc/profile文件:sudo vi /etc ...