首页 > 其他 > 详细

数据结构(三)——栈Stack

时间:2017-05-13 19:41:34      阅读:218      评论:0      收藏:0      [点我收藏+]

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

一、顺序栈

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

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

原文:http://www.cnblogs.com/wxywxy/p/6849879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!