栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

《数据结构》学习记录(5):顺序栈

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《数据结构》学习记录(5):顺序栈

一、概念

1、栈

一种只能在一端进行插入或删除操作的线性表。

栈的主要特点是“后进先出”,即后进栈的元素先出栈。

2、栈的几个概念

允许进行插入、删除操作的一端称为栈顶。另一端称为栈底。当栈中没有数据元素时,称为空栈。栈的插入操作通常称为进栈或入栈。栈的删除操作通常称为退栈或出栈。 

3、顺序栈

利用顺序存储结构实现的栈。

二、顺序栈的基本操作

1、定义栈

#define elemType char
const int MaxSize = 5;
struct SqStack
{      
    elemType data[MaxSize]; 
    int top;                //栈顶指针
};

2、初始化栈

void InitStack(SqStack *&s)
{       
    s = new SqStack;
    s->top = -1;
} 

3、判断栈是否为空

bool StackEmpty(SqStack *s)
{
    return s->top == -1;
}

4、进栈

bool Push(SqStack *&s, elemType e)
{    
    if (s->top== MaxSize - 1) 	//栈满的情况,即栈上溢出
        return false;
    s->top++;		   	//栈顶指针增1
    s->data[s->top] = e;	   	//元素e放在栈顶指针处
    return true;
}

5、出栈

bool Pop(SqStack *&s, elemType &e)
{    
    if (s->top == -1)	//栈为空的情况,即栈下溢出
        return false;
    e = s->data[s->top];	//取栈顶指针元素的元素
    s->top--;		//栈顶指针减1
    return true;
}

6、取栈顶元素

bool GetTop(SqStack *s, elemType &e)
{	
    if (s->top == -1)	//栈为空的情况,即栈下溢出 	   
        return false;
    e = s->data[s->top];	//取栈顶指针元素的元素
    return true;
}
三、一个例子

bool symmetry(elemType str[])
{    
    int i; 
    elemType e; 
    SqStack * st;
    InitStack(st);			//初始化栈

    for (i = 0;str[i] != '';i++)	//将串所有元素进栈
        Push(st,str[i]);		//元素进栈

    for (i = 0;str[i] != '';i++)
    {    
        Pop(st,e);			//退栈元素e
        if (str[i] != e)	 	//若e与当前串元素不同则不是对称串
        {     
            delete st;	//销毁栈
            return false;
        }
    }

     delete st;	 	//销毁栈
     return true;
}
四、共享栈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779188.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号