《大话数据结构》第四章栈与队列
2011-11-04 11:32
225 查看
1.栈是限定仅在表尾进行插入和删除的线性表
允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的栈称为空栈,栈又称为后进先出的线性表,简称LIFO结构。
1.1 栈的插入操作,叫做进栈,也称压栈,入栈。子弹如弹夹
栈的删除操作,叫做出栈。子弹弹出弹夹
1.2 先进栈的元素是不是只能最后出栈?
答案不一定,如果有3个元素,有5种可能的出栈顺序。
1.3 栈的顺序存储结构和实现
1.3.1 用数组实现栈,下标为0的一端作为栈底较好,大头做栈顶,因为经常要做插入和取出的操作。
1.3.2 我们用一个top的变量指示栈顶元素在数组中得位置,当栈只有一个元素时,top等于0,空栈的top=-1。
1.3.3 栈的结构定义
见后面实现代码
1.3.4 若有一个栈,StackSize是5,请看下图
1.3.5 栈的顺序存储结构——各种操作实现
允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的栈称为空栈,栈又称为后进先出的线性表,简称LIFO结构。
1.1 栈的插入操作,叫做进栈,也称压栈,入栈。子弹如弹夹
栈的删除操作,叫做出栈。子弹弹出弹夹
1.2 先进栈的元素是不是只能最后出栈?
答案不一定,如果有3个元素,有5种可能的出栈顺序。
1.3 栈的顺序存储结构和实现
1.3.1 用数组实现栈,下标为0的一端作为栈底较好,大头做栈顶,因为经常要做插入和取出的操作。
1.3.2 我们用一个top的变量指示栈顶元素在数组中得位置,当栈只有一个元素时,top等于0,空栈的top=-1。
1.3.3 栈的结构定义
见后面实现代码
1.3.4 若有一个栈,StackSize是5,请看下图
1.3.5 栈的顺序存储结构——各种操作实现
public class StackDemo { public static void main(String[] args) { Stack stack = new Stack(5); stack.initStack(); } } class Stack { private int[] data = null; private int capacity; // 栈的容量 private int top; // 栈顶指针 public Stack(int capacity) { this.capacity = capacity; } /* * 初始化栈 */ public void initStack() { data = new int[capacity]; top = -1; } /* * 入栈 */ public String push(int element) { if (top == capacity - 1) { return "ERROR, 栈满"; } // 先top加1,然后再插入值 top++; data[top] = element; return "SUCCESS"; } /* * 出栈 */ public int pop() { if (top == -1) { return -1; // 空栈返回-1 } // 先top减1,然后再返回值 int temp = top; top--; return data[temp]; } /* * 栈元素个数 */ public int stackLength() { if (top == -1) { return 0; } return top + 1; } /* * 判断栈是否为空 */ public boolean isEmpty() { if (top == -1) { return true; } return false; } // 栈置为空 public void clear() { this.top = -1; } /* * 从栈底开始打印所有元素 */ public void print() { for (int i : data) { System.out.print(i + " "); } } }
相关文章推荐
- 大话数据结构 code 第四章 05顺序队列_Queue
- 「笔记」《大话数据结构》第四章:栈与队列
- 大话数据结构 code第四章 06链队列_Link
- 《大话数据结构》第四章 栈与队列
- 《大话数据结构》笔记之 第四章 栈与队列
- 《大话数据结构》第四章 队列
- 大话数据结构--第四章 栈与队列
- 大话数据结构 第四章 栈与队列 (读书笔记)
- 大话数据结构第四章——栈与队列
- [读书笔记]-大话数据结构-4-栈与队列(二)-队列
- 大话数据结构 code 第四章 04斐波那契函数_Fibonacci
- [数据结构]第四章-队列
- 大话数据结构第四章栈十个问题及解答
- 大话数据结构2 - 栈和队列
- Java高级技术第四章——Java容器类Queue之从小顶堆到优先队列PriorityQueue
- 为什么我要放弃javaScript数据结构与算法(第四章)—— 队列
- 第四章 栈与队列
- WCF 第四章 绑定 使用队列技术进行通信
- 第四章:栈与队列算法设计题(10)
- Java高级技术第四章——Java容器类Queue之体验双端队列ArrayQueue设计之妙