❶ 栈的顺序存储空间我在一个题里看到是,一个栈的顺序存储空间s(1:m),这表示什么意思啊ԅ
栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。
❷ 栈只能顺序存储,这句话对吗,为什么
栈只能顺序存储,这句话不对。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)。
一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈也称为后进先出表。线性表可以顺序存储,也可以链式存储,因此栈也可以采用链式存储结构。
(2)顺序栈的存储空间扩展阅读:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下几方面的信息:
1、函数的返回地址和参数。
2、临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。
链式存储结构的特点:
1、比顺序存储结构的存储密度小(链式存储结构中每个结点都由数据域与指针域两部分组成,相比顺序存储结构增加了存储空间)。
2、逻辑上相邻的节点物理上不必相邻。
3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。
4、查找节点时链式存储要比顺序存储慢。
5、每个节点是由数据域和指针域组成。
6、由于簇是随机分配的,这也使数据删除后覆盖几率降低,恢复可能提高。
顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。
参考资料:网络-栈
参考资料:网络-链式存储结构
参考资料:网络-顺序存储结构
❸ 栈的顺序存储是什么
由于栈是运算受限的线性表,因此线性表的存储结构对栈也适用,而线性表有顺序存储和链式存储两种,所以栈也有顺序存储和链式存储两种。
1.栈的顺序存储栈的顺序存储是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素,并附设指针top指示栈顶。
2.栈的顺序存储类型定义1)用内存动态分配方式定义栈的顺序存储(1)栈的顺序存储表示。
顺序栈本质上是顺序表的简化,由于栈底位置是固定不变的,所以可以将栈底位置设置在存储空间的基地址上,栈顶位置是随着进栈和退栈操作而变化的,故用top来指示当前栈顶元素的下一个位置,通常称top为栈顶指针。
❹ 栈的顺序储存空间中,元素个数怎么算
因为栈顶在高位,也就是m+1处,进栈时top向低下标扩展,因此当top为m时,有1个元素;为m -1 时,有2个元素;为20时,有m- 20 +1 = m-19个元素在栈中。
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
(4)顺序栈的存储空间扩展阅读:
1、进栈(PUSH)算法
① 若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
② 置TOP=TOP+1(栈指针加1,指向进栈地址);
③ S(TOP)=X,结束(X为新进栈的元素);
2、退栈(POP)算法
① 若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
② X=S(TOP),(退栈后的元素赋给X):
③ TOP=TOP-1,结束(栈指针减1,指向栈顶)。
❺ 有六个元素6,5,4,3,2,1 的顺序进栈,得到出栈序列为:2 3 4 1 5 6,则栈的存储空间至
要2先出栈,必须先进栈的65432都在栈内,因神友碧为栈是后进先出的,所以接着3、4都可出栈,1可以即进即出,游举接着5出栈,6出栈,就完全符合出栈序列。所以栈的告神存储空间至少为5.
❻ 栈的顺序存储空间s(1:m)是什么意思
根据题意,栈空间如图所示:
也就是说,栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。
当压入第一个元素时,TOP指针指向m+1-1 = m
当压入第二个元素时,TOP指针指向m+1-2 = m-1
......
以此类推,
当压入第N个元素时,TOP指针指向m+1-N = 20
则N = m+1-20 = m-19
选C。
❼ 数据结构中什么叫做顺序栈
顺序栈
栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。
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┐的向量空间比较,前者发生上溢的概率比后者要小得多。
❽ 设栈的顺序存储空间为S(1:m),初始状态为TOP=m+1.
将发生栈满错误,因为初始状态TOP=m+1,共m个空间,满栈时top=1,再放入元素就会栈满溢出
❾ 判定一个顺序栈为栈满的条件
表示顺序栈的数组下标如果从0开始,栈空的条件是top==-1,栈满的条件是top==maxsize-1;如果从1开始,top==1表示栈空,top==maxsize表示栈满。
栈的元素依次存放在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称“栈顶指针”。
(9)顺序栈的存储空间扩展阅读:
栈的顺序存储结构是利宏李用内存中的一片起始位置确定的连续存储区域来存放栈中的所有元素,另外为了指示栈顶的准确裂信位置,还需要引入一个栈顶指示变量top,采用顺序存储结构的肆绝轮栈称为顺序栈(sequence stack)。
设数组data[MAXSIZE]为栈的存储空间,其中MAX-SIZE是一个预先设定的常数,为允许进栈结点的最大可能数目,即栈的容量。初始时栈空,top等于0。当top不等于0时,data[0]为栈底元素,即为当前停留在栈中时间最长的元素。
而data[top-1]为最后入栈的元素,即为栈顶元素。当top==MAXSIZE时,表示栈满,如果此时再有结点进栈,将发生称之为“上溢”(语法上表现为“数组越界”)的错误,而当top==0时再执行出栈操作,将发生称之为“下溢”的错误。
给出了栈容量为6时,入栈、出栈操作以及栈空、栈满等几种典型的栈状态。由于顺序存储结构多采用一维数组存放栈,因此必须特别注意“栈上溢”错误的发生;在实现入栈操作时,先判断是否栈满(stack full),如果栈满,及时处理。
参考资料来源:网络-顺序栈