不一定。
栈分顺序栈和链式栈。顺序栈为栈的顺序实现,顺序栈为利用顺序存储结构实现的栈。
采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置为随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。
链式栈为一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
扩展资料
栈作为一种数据结构,为一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
在计算机系统中,栈为一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。
参考资料来源:百度百科-栈
参考资料来源:百度百科-顺序栈
参考资料来源:百度百科-链式栈
呃~弄明白两个概念:存储结构和逻辑结构。主要的存储结构是顺序存储和链式存储(基本这两个就OK了)。而逻辑结构是指线性表(栈、队列属于线性表的范畴)、图、二叉树等概念。理论上所有的逻辑结构都可以用上面两种存储结构在计算机内实现(当然从效率、存储空间等方面考虑实际实现中不同的逻辑结构采用的存储结构会有所偏重)~举个类似的例子:汽车和内燃机,内燃机主要有汽油机和柴油机两类,汽车有卡车、轿车、客车等,理论上所有的汽车都可以用两种内燃机做动力,我可以说客车是汽车,客车既可以是汽油机驱动的汽车也可以有柴油机驱动的汽车。所以栈是线性表,但栈既可以用可以顺序存储实现也可以用链式存储实现。