美文网首页数据结构和算法分析
数据结构—栈的基本实现

数据结构—栈的基本实现

作者: 小明同学机器人 | 来源:发表于2020-02-05 12:51 被阅读0次

   春节假期,无聊至极,有给橘子做接生的,有做套圈玩钱的,有一家人打扑克娱乐的,有微信视频聊天划拳喝酒的,无聊的最高境界就是自己自言自语,自己就是聊天对象,自己和自己玩游戏,数数自己的头发等等。不还真有这样的人。有没有有兴趣数我写了多少字的。!!

栈的定义和特点

是限定仅在表尾进行插入或者删除操作的线性表。根据后进先出的原则。在日常生活中的例子,比如 洗盘子逐个把盘子叠放起来,然后洗的时候从上面拿一个洗一个。

栈的入栈出栈图
  • 从上图可看出 入站的小方块最后进入,出栈的时候小方块最先出去,则这就是栈的一种原则,一种形式。
  • 有熟悉开发android APP的应该熟悉,有个Fragment的控件,可以在一个布局控件中加入Fragment,addBackStack(),popBackStack(),方法分别就是入站出栈。有想学习Android 开发的可以私信,并发文章噢!!

栈的基本操作

  • 构造空栈
  • 摧毁栈
  • 清空栈
  • 判断是否空栈
  • 栈中元素个数
  • 返回栈顶元素
  • 入栈
  • 出栈
  • 访问所有栈

顺序栈的表示和实现

  • 顺序栈是指用顺序存储结构实现的栈,用一组连续的存储单元依次存放,从栈底到栈顶的元素。
//
// Created by wzy on 2020/2/5/005.
//

#include <stdio.h>

#define  MAXSIZE 100
typedef int SElemType;
typedef struct {
    SElemType *base;
    SElemType *top;
    int stackSize;
} SqStack;

void initStack(SqStack &S) {
    S.base = new SElemType[MAXSIZE];
    if (!S.base) return;
    S.top = S.base;//起初 栈顶和栈底属于同一位置 指同一个地址
    S.stackSize = MAXSIZE;
}

bool Push(SqStack &S, SElemType e) {//栈 入栈值
    bool flag = false;
    if (S.top - S.base == S.stackSize) {
        printf("栈满\n");
    } else {
        *S.top++ = e;    //不满的话栈顶指针向上挪一位  并赋值
        printf("入站成功\n");
        flag = true;
    }
    return flag;
}
//出栈 返回栈顶元素
SElemType Pop(SqStack &S, SElemType &e) {

    if (S.top == S.base) {
    } else {
        e = *--S.top - 1;
//出栈的话 栈顶指针减一 ,并返回栈顶元素 再减一(栈顶指的本身就是一个空栈位置)
    }
    return e;


}


//显示栈顶元素
SElemType GetTop(SqStack S) {
    if (S.top != S.base) {
        return *(S.top - 1);
    }
}

int main() {
    SqStack S;
    initStack(S);
    Push(S, 1);//入栈三次
    Push(S, 2);
    Push(S, 5);
    SElemType a = GetTop(S);
    printf("%d\n", a);//显示栈顶元素打印
    SElemType aa;
    Pop(S, aa);//出栈第一次
    SElemType p1 = Pop(S, aa);   //出栈两次,并打印栈顶元素
    printf("%d\n", p1);
}
  • 有顺序栈就有链栈 使用链表的方式进行存储站元素。但是基本的操作都是一样的。进一步的讲解我将在以后进行更新。

相关文章

  • Axure的另类学习法(一)——队列与栈

    在学习数据结构时,书中提到了两种最基本的数据结构“队列”与“栈”。 于是,想用Axure来实现下队列和栈的两种基本...

  • 栈的数据结构 栈数据结构方面特点是数据具有先进后出的特点,下面是用数组简单实现了栈的基本方法 概念 运行原理 问题...

  • 232. Implement Queue using Stack

    题意:用栈实现队列 思路:这题是对基本数据结构的考察;

  • Python——用列表实现栈和队列

    1 用列表实现栈的功能 栈是一种“先进后出”的数据结构,可以用python内置的列表实现它。栈有两个最基本的操作:...

  • Android面试题总结(题目+复习链接)

    数据结构 1.栈实现原理 java数据结构与算法之栈(Stack)设计与实现 - CSDN博客 2.链表实现原理 ...

  • 栈、队列和链表

    基本数据结构 栈和队列 栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。 栈 栈上的in...

  • 数据结构—栈的基本实现

       春节假期,无聊至极,有给橘子做接生的,有做套圈玩钱的,有一家人打扑克娱乐的,有微信视频聊天划拳喝酒的,无聊的...

  • java学习笔记(基础篇)—数组模拟实现栈

    栈的概念 先进后出策略(LIFO) 是一种基本数据结构 栈的分类有两种:1.静态栈(数组实现) 2.动态栈(链表实...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

网友评论

    本文标题:数据结构—栈的基本实现

    本文链接:https://www.haomeiwen.com/subject/bpwjxhtx.html