栈和队列是两种在运算时要受到某些特殊限制的线性表,故也称为限定性的数据结构。
1.概念
定义:栈是限定只能通过一端来实现数据存储和检索的一种线性表。
栈顶(top)是允许插入和删除的一端。
栈底(bottom)是不允许插入和删除的一端。
修改原则:先进后出或后进先出(Last In Frist Out,LIFO)
2.栈的存储结构
栈的存储结构有顺序存储和链式存储。
①栈的顺序存储(顺序栈):指用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置。
②栈的链式存储(链栈):用链表作为存储结构,由于栈中元素的插入和删除仅在栈顶一端进行,因此不必设置头结点,链表的头指针就是栈顶指针。
3.栈的操作
stacksize:栈的最大容量,表示系统分配给栈的最大存储单元。
插入元素(入栈):先top+1,再插入元素。
删除元素(出栈):先出栈,再top-1。
空栈的判断:top=0 或 top=bottom。
求栈内元素个数:num=top-bottom。
栈满判断:top=stacksize。
4.栈的典型应用
表达式求值、括号匹配、递归函数调用、数制转换等。