数据结构——栈Stack

Posted 王醒燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构——栈Stack相关的知识,希望对你有一定的参考价值。

栈是一种特殊的线性表,插入和删除操作均在栈顶进行,插入操作称为入栈,删除操作称为出栈。

一、顺序栈

利用顺序存储方式实现的栈称为顺序栈,下面是它的一些基本操作实现算法,需要理解和记忆。

1.顺序栈的类型定义

#define StackSpaceIncr 20
typedef struct{
    SElemType *base;
    int top;
    int stackSize;
}SqStack;//顺序栈类型 

2.初始化操作InitSqStack(&S,InitSize)

Status InitSqStack( SqStack &S,int InitSize)
{
    S.base=(SElemType *)malloc(InitSize * sizeof(SElemType));
    if(!S.base) return OVERFLOW;//若失败
    S.stackSize=InitSize;
    S.top=0;//置为空栈
    return OK; 
} 

3.判空操作stackIsEmpty(S)

Status stackIsEmpty(SqStack S)
{
    if(!S.top) return TRUE;
    else return FALSE;
}

4.清空操作clearStack(&S)

void clearStack(SqStack &S)
{
    S.top=0;
}

5.求栈长操作stackLength(S)

int stackLength(SqStack S)
{
    return S.top;
}

6.入栈操作Push(&S,e)

7.出栈操作Pop(&S,&e)

8.取栈顶操作getTop(S,&e)

二、链式栈

利用链式存储结构实现的栈称为链式栈,利用单链表实现链式栈时,其初始化、判空、清空、求长度操作都与单链表相同。

1.初始化操作InitLinkStack(&S)

2.入栈操作Push(&S,e)

3.出栈操作Pop(&S,&e)

4.取栈顶操作getTop(S,&e)

三、栈的实例——简单的括号匹配检验

以上是关于数据结构——栈Stack的主要内容,如果未能解决你的问题,请参考以下文章

数据结构--栈(Stack)

stack栈

剑指 Offer 09. 用两个栈实现队列

栈--原地reverse栈

栈(Stack)

java 中 heap(堆)和stack(栈)的区别