博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的基本概念及顺序栈上的操作
阅读量:4183 次
发布时间:2019-05-26

本文共 950 字,大约阅读时间需要 3 分钟。

栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。栈和队列被广泛应用于各种程序设计中。

栈的基本概念

栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。

  (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
  (2)当表中没有元素时称为空栈。
  (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。
 栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中”最新”的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。
 

顺序栈上的基本操作

//顺序结构的栈定义#define MAX_SIZE 10typedef int DataType;typedef struct Stack{    DataType _array[MAX_SIZE];    int _size;}Stack; //初始化void StackInit(Stack* s){    assert(s);    s->_size = 0;}//压栈void StackPush(Stack* s, DataType data){    assert(s);    if (s->_size == MAX_SIZE)        return;    s->_array[s->_size++] = data;}//出栈void StackPop(Stack* s){    assert(s);    if (s->_size == 0)        return;    s->_size--;}//判空int EmptyStack(Stack* s){    assert(s);    return s->_size == 0;}//返回栈顶数值int TopStack(Stack* s){    assert(s);    return s->_array[s->_size - 1];}//栈中有效值个数int SizeStack(Stack* s){    assert(s);    return s->_size;}

转载地址:http://qtuoi.baihongyu.com/

你可能感兴趣的文章
Differences between VMware FT and HA(转)
查看>>
Cloud Prizefight: OpenStack vs. VMware(转)
查看>>
亚马逊Auto Scaling
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
svn忽略ignore文件记住方式(转)
查看>>
web缓存相关知识(转)
查看>>
Understanding Spring MVC Model and Session Attributes
查看>>
Spring MVC中Session的正确用法之我见(转)
查看>>
Spring2.5 访问 Session 属性的四种策略
查看>>
Spring MVC 3.0 深入及对注解的详细讲解(转)
查看>>