栈顶指针不是(👑)头指针(🕯),两者区别如下:
一、指(👊)代(😔)不同
1、栈(👟)顶指针:是在栈(🐑)操作(📥)过程中,有一个专门(🌦)的栈(🌾)指针(习惯上(🔃)称它为TOP),指出栈顶元素(🌏)所在(🌂)的位置。
2、(🤔)头(🔡)指针:是以确定线性表中第一个元素(🍭)对应的存(🚙)储位置,用(🔋)于处理数(📺)组、链表、队(👊)列等(🥧)数据结构。
二、特(🏂)点不同
1、栈顶(🏵)指针:是(🐖)一种特殊的(🏃)线性表(🏍),是一(♏)种只允许在(📛)表的一端进行插入或删除操作的线(🥍)性表。表(🌝)中允许(🍯)进行插入、删除操作的一端称(🥤)为栈顶。表的另一端(🚏)称为栈底。栈顶(⛅)的当前位(⛓)置(🔦)是动态的,对(♐)栈顶当前位置的标记称为栈顶指(😬)针(📖)。
2、头指针(🕟):头(📤)指针(🥞)指向链表第一个(💒)存储位置(📬),当存在头结点时(📃)头指针指向头结点,这时如(👾)果删除链表中的节点(🚁)头指针不会改变。
三、内存操作不同
1、栈顶(👈)指针:栈(📴)顶指针动态反映了栈中元素的变化(🍠)情(✴)况。
2、头指针:头结点(❌)后,对在第一个元素结点(🍂)前插(🛒)入结(🕔)点和删除第一个结点,其操作(😅)与对(👐)其它结点的操作统一了。
参考资料来源:百(♿)度百科-头指(🏞)针
参考资料来源:百度百科(💱)-栈顶指(🎣)针
表示顺序(⛪)栈的数组下标如果从0开始,栈空(🛸)的条件是top==-1,栈满的条件是top==maxsize-1;如果从1开始,top==1表示栈空,top==maxsize表示栈(🕹)满。
栈的元(🌟)素(🚞)依次存放(⏳)在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称(📅)“栈顶指针”。
扩展(♟)资料:
栈的(🦁)顺(🎚)序存储结构是利用内存中的一片起始位置确定的连(🔟)续(📏)存储区域来存放栈中(📍)的(🍩)所有元素,另(🤵)外为了指示栈顶的准确位置,还需要引入一个栈顶指示(📑)变量(🍑)top,采用(🌋)顺序存储结(🖋)构(🛣)的栈称为(🏷)顺序(😙)栈(sequence stack)。
设数(📩)组data[MAXSIZE]为栈的存储空间(🔐),其中MAX-SIZE是一(🍩)个预先设定的常数,为允许进栈结点的最大(👭)可能(🤱)数目,即(🥀)栈(🌀)的容量。初始时栈空,top等于0。当top不等于0时,data[0]为栈(🐄)底(🚌)元素(🦂),即为当前(👛)停留在(📓)栈中时(📭)间最长的(㊙)元素。
而data[top-1]为最后(🎤)入栈的元素,即为栈顶(🤼)元(⚪)素。当top==MAXSIZE时,表示栈满,如果此时再有(🍆)结点进栈,将发生称之为“上溢”((⛏)语(🛬)法上表现为“数(⛽)组越界”)的(🥜)错误,而当top==0时再执行出栈操作,将(🥁)发生(⛲)称之(🏄)为“下溢”的错误。
给出了栈(📼)容量为6时,入栈、(📌)出(🌎)栈操作以及栈(❗)空、栈(🍺)满等几种典型的栈状态。由于顺序存储结构多采用一维数组存放栈,因(🗻)此必(🐴)须特别注意“栈(🈁)上溢”错误的(🏑)发生;在实现入栈操作时,先判断是否栈满(stack full),如果栈(❕)满,及(🌞)时处理。
参考资料来源:百度百科(🕥)-顺(🔛)序栈