专栏首页花狗在Qt线性表--顺序栈(九)

线性表--顺序栈(九)

一.介绍

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

二.代码实现

1.定义栈

#define Stack_Size 50
typedef struct
{
 char elem[Stack_Size];//用来存放栈中的元素的一维数组
 int top; //用来存放栈顶元素的下标,top为-1表示空栈
}SeqStack;

2.初始化顺序栈

void InitStck(SeqStack * S)
{
 //构造一个空栈S
 S->top = -1;
}

3.进栈

int Push(SeqStack * S, int x)
{
 //将x置入S栈新栈顶
 if (S->top == Stack_Size - 1)return(false);
 S->top++;
 S->elem[S->top] = x;
 return(true);
}

4.出栈

int Pop(SeqStack * S, int *x)
{
 //将S栈顶元素弹出,放到x所指定的存储空间中打出
 if (S->top == 1)//栈为空
  return(false);
 else
 {
  *x = S->elem[S->top];//栈顶元素赋给
  S->top--;//修改栈项指针
  return(true);
 }
}

5.读栈顶元素

int GetTop(SeqStack * S, int * x)
{
 //将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保存不变
 if (S->top == -1)//栈为空
  return(false);
 else
 {
  *x = S->elem[S->top];//栈顶元素赋给
  return(true);
 }
}

代码来自《数据结构—用C语言描述》耿国华等人著。

若有错误,欢迎指出批评,欢迎讨论。 每文一句:如果敌人让你生气,那说明你还没有胜他的把握。如果朋友让你生气,那说明你仍然在意他的友情。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于C/C++ 一些自己遇到的问题以及解惑

    有些自己遇到的,有一些是通过群友的提问应发的,问题本身的价值可能并不高,但其背后的原因才是我们应该学习的,下面我们来看看。

    花狗Fdog
  • 线性表--多栈共享技术(十)

    栈的应用非常广泛,经常会出现一个程序中需要同时使用多个栈的情况。若使用顺序栈,会因为对栈空间大小难以准确估计,从而产生有的栈溢出、有的栈空间还很空闲的情况。为了...

    花狗Fdog
  • 蓝桥杯第九届C语言C组第二题:猴子分香蕉

    内容:5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一...

    花狗Fdog
  • JavaScript: 挑战函数式数据结构

    先前想在自己的 函数式方言解释器 里实现 元组 这种数据结构,但是没有什么方向,就去看了下 Scheme 的语法,看了下 Wiki,然后不知不觉间,看到了用 L...

    腾讯IVWEB团队
  • 斯坦福CS231n - CNN for Visual Recognition(1)-lecture2图像分类、最近邻分类器

      顾名思义,就是给定一个图像,判断出它属于哪一个类。通常通过带有标签的数据作为训练集用各种方法进行训练, 然后在测试集上进行测试,预测出最可能的类别(标签)。

    李智
  • 这就是iPhone11?嗯…可能还会运行加密货币

    话说前段时间,有个叫@BenGeskin的谍照大人,曝光了一张iPhone 11 和 iPhone 11 Max 的渲染图,后置的三摄非常抢眼。

    区块链大本营
  • 数据库系统设计概述

    数据是系统最重要的信息。大部分系统都是对数据的管理。应用系统通过数据模型来构建现实世界,通过算法操作对象或数据结构,来改变数据模型的状态。数据被组织在操作系统文...

    码哥字节
  • C++经典算法题-合并排序法

    之前所介绍的排序法都是在同一个阵列中的排序,考虑今日有两笔或两笔以上的资料,它可能是不同阵列中的资料,或是不同档案中的资料,如何为它们进行排序?

    cwl_java
  • Prior-based Domain Adaptive Object Detection for Hazy

    恶劣的天气条件,如雾霾和雨水,会破坏捕获图像的质量,导致训练在干净图像上的检测网络在这些图像上表现不佳。为了解决这一问题,我们提出了一种无监督的基于先验的领域对...

    于小勇
  • KAFKA分布式消息系统

    Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点...

    java达人

扫码关注云+社区

领取腾讯云代金券