栈的定义:
栈又称为堆栈,是一种受限的线性表,这是因为它仅允许在线性表的固定一端(表尾)进行插入、删除、栈顶元素等运算,不允许在其他任何位置进行运算,限制操作的表尾端称为“栈顶”,另一端称为“栈底”。
特点:栈是“后进先出”的线性表或“先进后出”的线性表。
顺序存储结构
需要一个数组和整型变量,利用数组来存储元素,利用整型变量存储栈顶元素的下标,通常用TOP表示,同时也叫做栈顶指针。
top = -1即表示栈空。
元素入栈时,从尾部入栈,同时栈顶指针top+1,栈的长度+1。
元素出栈时,从尾部出栈,同时栈顶指针top-1,栈的长度-1返回元素值。
链式存储结构
栈的链式存储结构称为链栈,有结点构成的单链表实现,是运算受限的单链表,其插入和删除操作仅限制在链表的表头位置上进行,故链栈没有必要像单链表一样附加头结点,栈顶指针即为链表的头指针。
元素入栈时,从头部入栈,同时栈顶指针top指向新的元素,栈的长度+1。
元素出栈时,从头部出栈,同时栈顶指针top指向下一个元素,栈的长度-1,返回元素值。