/* sequenceStack.c */
/* 栈 先进后出(First In Last Out,FILO)*/ #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> #define MAXSIZE 100 /* 栈数据结构 */
/*
——————————
| data[2] | <--- top
———————————
|
——————————
| data[1] |
———————————
|
——————————
| data[0] |
———————————
*/
typedef struct {
int data[MAXSIZE]; /* 数组 */
int top; /* 栈指针 0表示栈底,-1表示空栈 */
} SeqStack; /* 栈函数声明 */
void interface(void);
SeqStack *initializeSeqStack();
bool isEmptySeqStack(SeqStack*);
int pushSeqStack(SeqStack*, int);
int popSeqStack(SeqStack*);
int peekSeqStack(SeqStack*); /* 程序主函数入口 */
int main(){
SeqStack *s = initializeSeqStack();
int flag, number; interface();
for(;;){
printf("Command: ");
scanf("%d", &flag);
switch(flag){
case : return ; break;
case :
printf("Enter number: ");
scanf("%d", &number);
pushSeqStack(s, number);
break;
case :
if(isEmptySeqStack(s))
printf("SeqStack is empty!\n");
else
printf("value: %d\n", popSeqStack(s));
break;
case :
if(isEmptySeqStack(s))
printf("SeqStack is empty!\n");
else
printf("value: %d\n", peekSeqStack(s));
break;
}
} return ;
} /* 用户界面 */
void interface(void){
puts("+*********************************+");
puts("+ 0, quit 退出 +");
puts("+ 1, push 压入 +");
puts("+ 2, pop 弹出 +");
puts("+ 3, peek 查看 +");
puts("+*********************************+");
} /* 栈函数实现 */
/* 初始化栈 */
SeqStack *initializeSeqStack(){
SeqStack *s = (SeqStack*)malloc(sizeof(SeqStack));
s->top = -;
return s;
}
/* 判断栈是否为空 */
bool isEmptySeqStack(SeqStack *s){
if(s->top==-){
return true;
}
return false;
}
/* 入栈 */
int pushSeqStack(SeqStack *s, int num){
/* 栈满不能入栈 */
if(s->top==MAXSIZE-){
return ;
}else{
s->data[++s->top] = num;
return ;
}
}
/* 出栈 */
int popSeqStack(SeqStack *s){
return s->data[s->top--];
}
/* 取栈顶元素 */
int peekSeqStack(SeqStack *s){
return s->data[s->top];
}

数据结构——顺序栈(sequence stack)的更多相关文章

  1. 数据结构 - 顺序栈的实行(C语言)

    数据结构-顺序栈的实现 1 顺序栈的定义 既然栈是线性表的特例,那么栈的顺序存储其实也是线性表顺序存储的简化,我们简称为顺序栈.线性表是用数组来实现的,对于栈这种只能一头插入删除的线性表来说,用数组哪 ...

  2. 数据结构 - 顺序栈的实现 C++

    顺序栈封装 C++ 使用C++对顺序栈进行了简单的封装,实现了栈的基本操作 封装方法: pop(),top(),size(),empty(),push() 代码已经过测试 #pragma once # ...

  3. Java数据结构之栈(Stack)

    1.栈(Stack)的介绍 栈是一个先入后出(FILO:First In Last Out)的有序列表. 栈(Stack)是限制线性表中元素的插入和删除只能在同一端进行的一种特殊线性表. 允许插入和删 ...

  4. 数据结构之栈(stack)

    1,栈的定义 栈:先进后出的数据结构,如下图所示,先进去的数据在底部,最后取出,后进去的数据在顶部,最先被取出. 栈常用操作: s=Stack() 创建栈 s.push(item) 将数据item放在 ...

  5. 数据结构之栈(stack)的实现

    一.栈 1.定义 栈的英文为(stack),是一种数据结构 栈是一个先入后出(FILO-First In Last Out)的有序列表. 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同 ...

  6. 数据结构--顺序栈--C++实现

    #include <iostream> #define MaxSize 5000 using namespace std; template <typename T> clas ...

  7. 数据结构——Java实现顺序栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...

  8. 【C#】【数据结构】005-栈:顺序栈

    C#数据结构:顺序栈 1.自定义顺序栈结构: /// <summary> /// 顺序栈 /// </summary> /// <typeparam name=" ...

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

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

随机推荐

  1. Oracle中如何创建数据库

    Oracle数据库的物理结构与MySQL以及SQLServer有着很大的不同.在使用MySQL或SQLServer时,我们不需要去关心它们的逻辑结构和物理结构. 但是在使用Oracle的时候,我们必须 ...

  2. 记一次SQL调优

    insert优化 如果你在某一时刻有大量的insert操作,一条一条插入是非常耗时的.insert语句本身支持一次插入很多条记录,插入记录数上限受sql语句长度限制,一般一次插个几千条是没问题的.在我 ...

  3. python合并视频

    视频合并 输入为:包含有视频的文件夹(注意路径:如   D:\\moves\\joy   双斜杠).合并后内容的名字如(我的合并视频      不用加.mp4) 输出为:我的合并视频.mp4+一个音频 ...

  4. undefined reference的一种case

    undefined reference是经常遇到的链接错误,一般是函数未定义或未正确链接引起的问题: but 有一种case,比较坑... c++ 调用 c 的函数,当c函数未加:extern “C” ...

  5. spring的@ControllerAdvice注解

    @ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理. 对于@ControllerAdvic ...

  6. ssh工具推荐MobaXterm 可能是你遇到过的比较出色的一款

    之前一直用xshell,现在推荐一个更好用的工具. 一站式的解决你的需求,而且画风个人也比较喜欢,而且随便一百度就能找得到green PJ 的版本

  7. Zabbix邮件预警-这个坑我跳了不止一次

    文章 Github 地址:点我 每每碰到 Zabbix,我发现配置邮件预警这个坑,我必须要跳进去,跟它是有八辈子的仇哦,哎,接下来数数这些坑.看看你遇到过类似的吗? Zabbix 预警配置流程 监控项 ...

  8. “金九银十”已过,总结我的天猫、蚂蚁、头条面试经历(Java岗)

    跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的 ...

  9. 关于Qt 静态成员函数调用信号

    class globalCalcThread; extern globalCalcThread *g_calcThread; class globalCalcThread : public QThre ...

  10. 新mac 下第一次 安装 mongodb 步骤

    新入手mac,安装mongo步骤记录:不建议使用网上的brew安装方法,因为试了半天没有成功,应该是新版本限制比较多! 从mongodb官网下载mac版本mongo: 1.访问MongoDB官方下载地 ...