由于栈是运算受限的线性表,因此线性表的存储结构对栈也适用,而线性表有顺序存储和链式存储两种,所以栈也有顺序存储和链式存储两种。
1.栈的顺序存储栈的顺序存储是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素,并附设指针top指示栈顶。
2.栈的顺序存储类型定义1)用内存动态分配方式定义栈的顺序存储(1)栈的顺序存储表示。
顺序栈本质上是顺序表的简化,由于栈底位置是固定不变的,所以可以将栈底位置设置在存储空间的基地址上,栈顶位置是随着进栈和退栈操作而变化的,故用top来指示当前栈顶元素的下一个位置,通常称top为栈顶指针。
不一定。
栈分顺序栈和链式栈。顺序栈为栈的顺序实现,顺序栈为利用顺序存储结构实现的栈。
采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置为随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。
链式栈为一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
扩展资料
栈作为一种数据结构,为一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
在计算机系统中,栈为一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。
参考资料来源:百度百科-栈
参考资料来源:百度百科-顺序栈
参考资料来源:百度百科-链式栈
根据题意,栈空间如图所示:
也就是说,栈是向上增长的,每次压入一个元素,栈的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.栈的顺序存储栈的顺序存储是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素,并附设指针top指示栈顶。2.栈的顺序存储类型定义1)用内存动态分配方式定义栈的顺序存储(1)栈的顺序存储表示。顺序栈本质上是顺序表的简化,由于栈底位置是固定不变的,所以可以将栈底位置设置在存储空间的...
栈只能顺序存储,这句话对吗,为什么
栈只能顺序存储,这句话不对。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈也称为后进先出表。线性表可以顺序...
栈只能顺序存储吗?
栈只能顺序存储,这句话不对。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈也称为后进先出表。线性表可以顺序...
栈的初态为什么是top=m+1
栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。当压入第一个元素时,TOP指针指向m+1-1 = m当压入第二个元素时,TOP指针指向m+1-2 = m-1。以此类推...
栈的顺序是什么?
先栈后出,先栈后出,C栈后出,D栈后出,所以栈顺序可以是A,B,C,D。B:A,里面的B,C,D被推入堆栈,然后D,C,B,A被推出。C:A先推进去再推出来,然后是B,然后是C,然后是C(只有B的空间),然后是D先推进去再推出来,最后是B,所以ACDB的顺序是可能。D:是不允许的。
栈是先进先出还是先进后出?
栈是先进后出。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈和队列 - 栈 - 顺序栈
顺序栈 栈的顺序存储结构简称为顺序栈 它是运算受限的顺序表 顺序栈的类型定义 define StackSize \/\/假定预分配的栈空间最多为 个元素 typedef char DataType;\/\/假定栈元素的数据类型为字符 typedef struct{ DataType data[StackSize];int top;}SeqStack;注意 ①顺序栈中元素用向量存放 ②栈底位置是...
栈和队列不是逻辑结构吗,它们的顺序和链式才是存储结构,一题中说栈...
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是不是顺序存储的线性结构啊?
栈分顺序栈和链式栈。顺序栈为栈的顺序实现,顺序栈为利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置为随入栈和出栈操作而变化的,故需用一个整型变量top...
入栈、出栈指针和数据操作顺序是什么样的?
栈的顺序存储及其运算与一般的线性表一样,在程序设计语言中,用一维数组S(1:m)作为栈的顺序存储空是,其中m为栈的最大容量。S(bottom)通常为栈底元素(在栈非空的情况下),s(top)为栈顶元素。Top-0表示栈空;top=m表示栈满。栈的基本运算有三种:入栈、退栈与读栈顶元素。入栈运算入栈...