问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构中什么叫做顺序栈?

发布网友 发布时间:2022-04-22 05:32

我来回答

2个回答

热心网友 时间:2023-09-22 13:46

顺序栈

 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。
1、
顺序栈的类型定义

#define
StackSize
100
//假定预分配的栈空间最多为100个元素

typedef
char
DataType;//假定栈元素的数据类型为字符

typedef
struct{

DataType
data[StackSize];

int
top;

}SeqStack;

注意:
  ①顺序栈中元素用向量存放

 ②栈底位置是固定不变的,可设置在向量两端的任意一个端点

 ③栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置
2、
顺序栈的基本操作

前提条件:

 设S是SeqStack类型的指针变量。若栈底位置在向量的低端,即S->data[0]是栈底元素。
(1)
进栈操作

 进栈时,需要将S->top加1

注意:
 
①S->top==StackSize-1表示栈满
  ②"
上溢
"现象--当栈满时,再做进栈运算产生空间溢出的现象。

上溢是一种出错状态,应设法避免。
(2)
退栈操作

 退栈时,需将S->top减1

注意:
  ①S->top<0表示空栈

 ②"
下溢
"现象——当栈空时,做退栈运算产生的溢出现象。

下溢是正常现象,常用作程序控制转移的条件。
顺序栈在进栈和退栈操作时的具体变化情况【参见动画演示】
3、顺序栈的基本运算
(1)
置栈空

void
InitStack(SeqStack
*S)

{//将顺序栈置空

S->top=-1;

}
(2)
判栈空

int
StackEmpty(SeqStack
*S)

{

return
S->top==-1;

}
(3)
判栈满

int
StackFull(SeqStack
*SS)

{

return
S->top==StackSize-1;

}
(4)
进栈

void
Push(S,x)

{

if
(StackFull(S))

Error("Stack
overflow");
//上溢,退出运行

S->data[++S->top]=x;//栈顶指针加1后将x入栈

}
(5)
退栈

DataType
Pop(S)

{

if(StackEmpty(S))

Error("Stack
underflow");
//下溢,退出运行

return
S->data[S->top--];//栈顶元素返回后将栈顶指针减1

}
(6)
取栈顶元素

DataType
StackTop(S)

{

if(StackEmpty(S))

Error("Stack
is
empty");

return
S->data[S->top];

}
4、两个栈共享同一存储空间

 当程序中同时使用两个栈时,可以将两个栈的栈底设在向量空间的两端,让两个栈各自向中间延伸。当一个栈里的元素较多,超过向量空间的一半时,只要另一个栈的元素不多,那么前者就可以占用后者的部分存储空间。

只有当整个向量空间被两个栈占满(即两个栈顶相遇)时,才会发生上溢。因此,两个栈共享一个长度为m的向量空间和两个栈分别占用两个长度为 └ m/2┘和┌m/2┐的向量空间比较,前者发生上溢的概率比后者要小得多。

热心网友 时间:2023-09-22 13:46

顺序栈是栈的顺序存储结构,是指用一片连续的存储空间依次存储栈中从栈底到栈顶的元素。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我女朋友我在同事面前说她是我媳妇她默认,在她组长面前就不承认了什么... 跨省迁户口需要的手续 户口跨省迁移需要哪些手续? cf空白名字怎么打(cf空白名字怎么打2021) 关于旅行的电影 就是一个人旅行放松心灵那种 不要纪录片 模拟人生2高斯的遗产给儿子还是女儿 模拟人生2如何跟高斯结婚啊? 模拟人生2高斯怎么找到贝拉,找到后能怎么办? 我的米2插上充电器后屏幕一直闪,快速的一下显示充电一下没在充电。请 ... ...屏幕乱闪 充不进去电 用手机连接电脑也是一样 什么软件可以把声音变为文字 顺序栈的栈顶指针 当栈满时 指向 最后一个栈元素的... 别人发的粤语语音可以翻译成中文吗 两栈共享一个存储空间,判定栈满的条件是什么? 有一个和红楼梦 贾宝玉有关的拼音是mu shi qian mo... 电影粤语如何转为中文音频 顺序栈会存在栈满的情况,链栈也会存在栈满的情况吗 红楼梦神瑛侍者住在哪 当用长度为N的数组顺序存储一个栈时,假定用top==N... 栈满的条件 怎么才能系统的学习软件测试,好就业呢? 为什么ApacheBench和Jmeter测试的结果很不同 设顺序栈存放在S.data[maxsize]中,栈底位置是maxs... 判断顺序栈(最多节点数为m)为栈满的条件是? jmeter和loadrunner的区别 中国人均GDP距高收入国家水平还有多远? 判定一个顺序栈为栈满的条件 jmeter中结果以列表形式查看需要使用什么元件 目前我国人均国民收入超 1 万美元,这意味着什么? 如何用Jmeter 测试 webservice发送xml文件 数据结构 顺序栈 一个是阆苑仙葩 一个是美玉无瑕 若说没奇缘 今生偏... 关于C语言的顺序栈的操作 手机视频粤语转换普通话 数据结构中顺序栈的问题? 为什么说栈满只是在顺序栈中考虑,而链式栈不必考虑... 讲一讲:你所知道的小孩过春节的习俗吗? 在播放视频的时候,怎样把粤语的形式变成中文形式... 数据结构顺序栈的问题 如何把音频文件转换成文字?要能转换成粤语的。 春节习俗幼儿 林黛玉是绛珠草转世,她前世跟贾宝玉有怎样的感情... 春节期间,有哪些民俗和传统,是一定要给孩子科普... 怎么把电影粤语声音改成普通话 顺序栈的出栈入栈 求以下成语的解释,帮帮忙撒... 如何发语音转换成文字 “儿童强不睡,相守夜欢哗”说的是春节哪项习俗? 数据结构 顺序栈的问题 粤语转为普通话