栈—顺序栈(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,从高地址向低地址方向填数值,最终 ...
随机推荐
- Java JVM——1.JVM与Java体系结构
前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! ✘ 想解决线上JVM GC问题,但却无从下手. ✘ 新项目上线,对各 ...
- Vue cli传递数据
Nav组件和Forecast组件都是Home组件的子组件. (1)子组件传递数据给父组件 在子组件中,通过this.$emit('自定义事件名', 参数1,参数2,...)来调用父组件中定义的事件. ...
- 机器学习策略篇:详解超过人的表现(Surpassing human- level performance)
超过人的表现 讨论过机器学习进展,会在接近或者超越人类水平的时候变得越来越慢.举例谈谈为什么会这样. 假设有一个问题,一组人类专家充分讨论辩论之后,达到0.5%的错误率,单个人类专家错误率是1%,然后 ...
- vue绑定下拉框 vue修饰符
<select v-model="selected"> <option>请选择</option> <option>HTML</ ...
- 美团面试:说说Netty的零拷贝技术?
零拷贝技术(Zero-Copy)是一个大家耳熟能详的技术名词了,它主要用于提升 IO(Input & Output)的传输性能. 那么问题来了,为什么零拷贝技术能提升 IO 性能? 1.零拷贝 ...
- WIn32 C++ 消息处理函数 问题
这个消息处理这个 Winproc 这个 接收到网络信息 在自己的函数用完后可以选择向系统路由传递这个网络消息接收到的数据原型 你处理完,系统也处理,不想让系统处理可以不将接受到的那几个变量啊数据啊,就 ...
- git与gitee码云
1.git分支 在前面我们基本了解Git的使用方法,这一节我们看下GIt重要概念[分支] 背景 例如于超老师在开发一个同性交友网站,刚写到登录功能,代码还没写完,今天先睡觉了,所以就commit提交到 ...
- 如何将 iPhone 的照片同步到 windows 电脑上
首先在电脑上,新建一个文件夹,并把共享权限打开. 文件夹 右键 属性,共享,添加 Everyone. 然后,让手机和电脑连接到同一个局域网,手机热点即可. 在手机端看 文件 app,找到电脑的共享文件 ...
- PackageScanner
package com.cmb.cox.utils;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;im ...
- LLDB辅助工具Chisel入门初探
LLDB辅助工具Chisel入门初探 基础适用方法 使用场景 iOS开发的调试过程中,LLDB的使用难度较大等各种原因,所以更多的时间开发者们仅仅用于po.expr输出,实际上Facebook(现在该 ...