栈—顺序栈(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,从高地址向低地址方向填数值,最终 ...
随机推荐
- Vue History模式IIS的配置补充
摘自 :https://blog.csdn.net/ssdnif/article/details/103856283 官方提供的配置<?xml version="1.0" e ...
- 一文搞懂 Spring Bean 的生命周期
一. 前言 在学习Spring框架的IOC.AOP两大功能之前,首先需要了解这两个技术的基础--Bean.在Spring框架中,Bean无处不在,IOC容器管理的对象就是各种各样的Bean.理解Bea ...
- CSS——样式继承
CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素.总的来说,一个HTML文档就是一个家族,然后html元素有两个子元素,相当于它的儿子,分别是head和body,然后body和head各自 ...
- 授权调用: 介绍 Transformers 智能体 2.0
简要概述 我们推出了 Transformers 智能体 2.0! ⇒ 在现有智能体类型的基础上,我们新增了两种能够 根据历史观察解决复杂任务的智能体. ⇒ 我们致力于让代码 清晰.模块化,并确保最终提 ...
- Kafka--Rebalance重平衡
Rebalance总览 Rebalance触发条件 (1)消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃 (2)消费者组订阅的主题数量发生变更 (3)消费组订阅主题的分区数发生变更 避免 ...
- vue3使用表格el-table-infinite-scroll.js:18 Uncaught (in promise) Error: [el-table-infinite-scroll]: .el-scrollbar__wrap element not found.
先看下表格里面有没有这个el-scrollbar__wrap class类 没有的话升级一下element-plus到最新的就行 你可以先查看element-plus的版本 npm view elem ...
- ETL工具-nifi干货系列 第一讲 揭开nifi神秘面纱
1.nifi简介 Apache NiFi 是基于流程编程概念的数据流系统.它支持强大且可扩展的数据路由.转换和系统中介逻辑的有向图.NiFi具有基于Web的用户界面,用于设计.控制.反馈和监控数据流. ...
- Oracle使用序列和触发器设置自增字段
一.创建一张工作表 例: create table tv(ID NUMBER primary key,TVNAME VARCHAR(16),ISPASS NUMBER); 二.先创建一个序列 cr ...
- 微信和支付宝异步回调通知IP白名单
附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...
- java8 lambda Group分组示例
导入jar包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</a ...