表、栈和队列
来源:互联网 发布:流星网络电视vip破解版 编辑:程序博客网 时间:2024/05/22 05:08
一、表
java中最常见的两个实现方式是:ArrayList和LinkedList。
1)ArrayList类提供了List ADT的一种可增长数组的实现。
优点是get和set的调用话费常熟时间。
缺点是新项的插入和现有项的删除代价昂贵。
2)LinkedList类则提供了List ADT的双链表实现。
优缺点和ArrayList相反。
其对get的调用是用next函数逐个查询的,代价很昂贵。
二、栈
栈是限制插入和删除只能在在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有push(进栈)和pop(出栈)。top操作是对栈顶的元素进行考察。对空栈进行pop或者top的时候,会出现ADT错误。
实现:ArrayList和LinkedList都支持栈操作,二者性能几乎无区别,都是快速的O(1)时间。
特点:如果需要调用最近的元素,就要应用栈。
应用:平衡符号,后缀表达式,方法调用。
方法调用:比如从一个方法跳转到另一个方法的时候,就要把原方法的参数,入口地址存入栈中。对于某方法使用了大量递归,可能导致栈溢出。
三、队列
像栈一样,队列也是表,然而使用队列时插入是在一端进行而删除是在另一端进行。基本操作有enqueue(入队,队尾插入),和dequeue(出队,对头删除)。
实现:ArrayList和LinkedList都支持队列操作,二者性能几乎无区别,都是快速的O(1)时间。具体操作是:让元素x入队时,我们让currentSize和back增1,置theArray[back]=x;若是元素出队,我们置返回值为theArray[front],并将currentSize和front减1.这有一个潜在的问题,比如说,十个位置的队列,队列已经使用的队尾,但是队列的前面的元素已经出队,实际上只有最后两位还有元素。简单的解决方法是使用循环数组实现,将back和front序号回绕。
特点:需要排队的地方,队列比较合适。
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表,栈和队列
- 表、栈和队列
- 表、栈和队列
- 表,栈和队列
- 线性表、栈、队列和优先队列
- 栈和队列--队列
- 【栈和队列】队列
- 线性表 && 栈和队列
- 线性表、栈和队列
- java---表、栈和队列
- java---表、栈和队列
- java---表、栈和队列
- 题目1076: 人见人爱 A ^ B
- C 求三角形面积
- 性能测试工具LoadRunner中进程运行和线程运行区别
- 关于ViewState的问题 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="之后有一大串乱码
- ppt打印铺满纸张时的设置方法
- 表、栈和队列
- xcode 调试技巧
- 简单的文件加密系统C语言代码
- 颜色空间转换(二)
- 栈(C#)
- QA System
- Windows下安装MySQL解压版
- 长方体类
- Sikuli