/* 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. 浅谈javascript引擎执行代码的步骤-(2019-2)

    平时面试经常会遇到类似下面的这种题,而且千变万化,让人一个头两个.示例这道题算是稍微有点难度的了,这种题考查的是JavaScript引擎执行代码的步骤. b = 'cba'; function a(a ...

  2. Algorithm: CRT、EX-CRT & Lucas、Ex-Lucas

    中国剩余定理 中国剩余定理,Chinese Remainder Theorem,又称孙子定理,给出了一元线性同余方程组的有解判定条件,并用构造法给出了通解的具体形式. \[ \begin{aligne ...

  3. CSS的基础学习

    CSS学习 --------学习资源 http://www.csszengarden.com/ CSS语法检查http://jigsaw.w3.org/css-validator/ 配置CSS的方法: ...

  4. redis的3种过期键删除策略

    Redis的过期键的过期时间都保存在过期字典中,过期键的删除策略有三种,分别是定时删除.惰性删除和定期删除. 定时删除 定时删除策略,是指在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时 ...

  5. 2019-11-29-win10-uwp-列表模板选择器

    原文:2019-11-29-win10-uwp-列表模板选择器 title author date CreateTime categories win10 uwp 列表模板选择器 lindexi 20 ...

  6. 1、Ext.NET 1.7官方示例笔记-事件

    官网参考地址:https://examples1.ext.net/#/Events/DirectEvents/Overview/ 先了解一下“事件” Ext.NET包括3种事件机制 DirectEve ...

  7. Java中级知识归纳(四)

    十六.Java内存模型 特点:原子性.可见性.有序性. 原子性:read.load.use.store.write.synchronized关键字保证原子性 可见性:synchronized.vola ...

  8. maven 学习---Maven自动化部署

    在项目开发中,通常是部署过程包含以下步骤 检入代码在建项目全部进入SVN或源代码库中,并标记它. 从SVN下载完整的源代码. 构建应用程序. 生成输出要么WAR或EAR文件存储到一个共同的网络位置. ...

  9. p12证书

    http://my.oschina.net/u/1245365/blog/196363

  10. 配置全文搜索引擎solr

    前言 solr是apache下的一个子项目,用java编写基于Lucene开发的全文搜索服务器,不同于Lucene,solr一个完成的搜索服务器,提供了众多接口调用,而Lucene只是个工具包.如果用 ...