美文网首页
数据结构-栈的基本操作

数据结构-栈的基本操作

作者: 始于尘埃 | 来源:发表于2019-05-18 16:19 被阅读0次

我与数据结构有个约会,带你领略不一样的数据结构!

/*
问题分析:栈和线性表的关联?
栈(包括队列)是线性表的重要应用,所以,他们在逻辑结构上,和线性表是一样的,有唯一后继和前驱;栈但是,栈是一种受限制的线性表
,他的插入和删除操作只能在一端(先进后出)。
*/

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
typedef int ElemType;
typedef struct Sqstack{
    ElemType data[Maxsize];
    int top;
}; 

/*
问题分析:
1.为什么初始化栈顶为-1?
这是我们自己设置的,但是由于栈是依托数组进行操作,一般情况,我们喜欢把第一个元素的索引记成0,所以
我们栈顶初始化一般有一下两种:
A.top = -1;这时我们的操作:进栈时,先top+1,在进元素(一般开始元素的索引为0)
,出栈时,先弹出元素,再top-1。
B.top = 0;这时我们的操作:进栈时,先进元素,再top+1;出栈时,先top-1;再弹出
*/

//初始化
void InitStack(Sqstack &L){
    L.top = -1;
}

//进栈
bool Push(Sqstack &L,int e){
    if(L.top == Maxsize-1){ //此时,栈为满                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        return false;
    }
    L.top++;
    L.data[L.top] = e;
    return true;
}

//出栈
bool  Pop(Sqstack &L,int &e){
    if(L.top == -1){  //此时,栈空
        return false;
    }
    e = L.data[L.top];
    printf("%d->",e); //查看删除元素
    L.top--;
    return true;
}
//输出(顺序输出)
void PrintStack(Sqstack L){
    for(int i=0;i<=L.top;i++){
        printf("%d->",L.data[i]);
    }
}
int main(){
    int x,e;
    Sqstack l;
    InitStack(l);
    for(int j=0;j<5;j++){  //入栈
        scanf("%d",&x);
        Push(l,x);
    }
    //PrintStack(l);
    printf("\n");
    for(int k=0;k<5;k++){
        Pop(l,e);
    }
    //PrintStack(l);
    system("pause");
}

相关文章

  • 顺序栈的表示和实现

    栈是一种重要的数据结构,从数据结构角度来看,栈也是线性表,其特殊性在于栈的基本操作是线性操作的子集,是操作受限的线...

  • 05--栈 递归

    栈 栈(Stack)又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线...

  • 栈和队列—什么是栈

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 栈和队列—什么是队列

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • LeetCode刷题之栈、队列

    栈(Stack) 又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线性...

  • android数据结构

    基本数据结构:数组、链表、栈、队列栈:LIFO 压栈出栈,只允许在栈顶操作队列:FIFO ,一般只允许队尾插,队首...

  • 队列

    什么是队列 队列和栈一样,是只用操作受限的线性数据结构。在栈中,只支持两种基本操作:入栈和出栈,而在队列中也有两个...

  • 栈是一种后入先出(LIFO,last-in-first-out)的数据结构 栈使用两种基本操作:推入(压栈,push...

  • 栈和队列

    顺序栈的基本操作: 链栈的基本操作 顺序队的基本操作 链队的基本操作

  • 数据结构入门教程-栈的应用实例1

    在这篇文章中数据结构入门教程-栈,我们了解了栈的基本操作,如入栈(push)和出栈(pop)这两个重要的特性,本篇...

网友评论

      本文标题:数据结构-栈的基本操作

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