数据结构论坛

首页 » 分类 » 问答 » 带你认识数据结构栈和顺序栈
TUhjnbcbe - 2024/10/9 8:44:00
北京中科医院坑 http://www.txbyjgh.com/axhd/m/2034.html
#数据#在本篇文章中,作者将与大家一起来了解数据结构中的栈,以及栈的一些特点和操作。

栈(stack)又被称为堆栈,它是一种只允许在一端(一般是表尾)进行插入和删除操作的线性表。

作为一种特殊的数据结构,由于栈被限定只能在尾进行插入和删除操作,所以它也被认为是一种受限的线性表。

而栈顶指的是允许插入和删除元素的一端,栈低指的是不允许插入和删除元素的一端。由于只能在一端进行操作,我们把栈称为是一种后进先出(LastInFirstOut)也称为LIFO的线性表。

与线性表一样,栈也分为顺序栈和链栈,那么在本篇文章中,我们先来看看如何使用c++代码初始化顺序栈以及它的一些相关操作。

1,初始化操作:

#includestdio.h

#includestdlib.h

#includemalloc.h

#defineMaxSize10

typedefstruct{

  intdata[MaxSize];

  inttop;

}SqStack;

voidInitStack(SqStacks){

  s.top=-1;

}//其实顺序栈的初始化就是定义了一个结构体类型的变量s,然后将栈顶指针top赋值为-1

一个顺序栈

2,入栈操作:

boolPush(SqStacks,intx){

  if(s.top==MaxSize-1){

    returnfalse;

    //TODO

  }//如果栈顶指针等于MaxSize-1则表示栈满

  s.top=s.top+1;//将栈顶指针上移

  s.data[s.top]=x;//将x放入栈顶的空间中

  returntrue;

}

3,出栈操作:

boolPop(SqStackS,intx){

  if(S.top==-1){

    returnfalse;

    //TODO

  }//如果top指针为-1,则该栈为空栈

  x=S.data[S.top];//将目前栈顶元素的值赋值给x

  S.top=S.top-1;//栈顶指针下移

  returntrue;

}

本篇文章到此就结束了,欢迎大家

1
查看完整版本: 带你认识数据结构栈和顺序栈