zoukankan      html  css  js  c++  java
  • 数据结构之栈(1)——顺序栈

    栈作为一种特殊的线性表,在计算机中有顺序储存结构和链式存储结构两种存储结构,根据这个我们把栈分为顺序栈链栈

    顺序栈

    栈顶:用top来动态地表示栈顶元素在顺序栈中的位置,当top=-1时表示栈为空

    这个是栈这个数据类型的定义

    typedef char ElemTypeStack;
    typedef struct{
            ElemTypeStack elem[MAXSIZE];
            int top;
    }FirStack;

    用一个数组来存储数据,对应的下标表示他在栈中的位置,top表示栈顶元素对应的下标,若栈为空,则top=-1

    栈的初始化

    void Init(FirStack *s)
    {
        s->top=-1;
    } 

    我们用一个顺序栈指针来表示一个顺序栈,初始化一个顺序栈为空时,我们设置他的top值为-1

    顺序栈的入栈操作

    复制代码
    //入栈
    bool PushStack(FirStack *s,ElemTypeStack x)
    {
        if(s->top==MAXSIZE-1)
        return false;
        else
        {
            (s->top)++;
            s->elem[s->top]=x;
            return true;
        }
    } 
    复制代码

    入栈时,首先应检查栈是否已满,若未满,则top自增,并将x置入栈顶

    上溢:若栈已满,还要进栈

    顺序栈的出栈

    复制代码
    bool PopStack(FirStack *s,ElemTypeStack x)
    {
        if(s->top==-1)
        return false;
        else
        {
            x=s->elem[s->top];
            s->top--;
            return true;
        }
    }
    复制代码

    首先应检查栈是否为空,若未空,则将栈顶元素的值赋给x,然后top自减

    下溢:若栈为空还要出栈,则会发生栈的下溢

    顺序栈之读栈顶元素

    //读栈顶元素
    bool GetTop(FirStack *s,ElemTypeStack x)
    {
    	if(s->top==-1)
    	return false;
    	else
    	{
    		x=s->elem[s->top];
    		return true;
    	}
    } 
    

      读栈顶元素之前,先判断栈是否为空,若不为空,则将栈顶元素赋值给x

    亲爱的听众朋友我是你的代班DJ
  • 相关阅读:
    第三天-基本数据类型 int bool str
    第二天-while循环 格式化输出 运算符 编码
    第一天-python基础
    Mysql
    Mysql
    Mysql
    Mysql
    Mysql
    Mysql
    Php
  • 原文地址:https://www.cnblogs.com/YTYMblog/p/5357059.html
Copyright © 2011-2022 走看看