码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构(三)——栈Stack

时间:2017-05-13 20:05:10      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:ack   链式存储   顺序栈   sizeof   tac   方式   fine   length   typedef   

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

一、顺序栈

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

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

标签:ack   链式存储   顺序栈   sizeof   tac   方式   fine   length   typedef   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!