表、栈和队列
来源:互联网 发布:望远镜淘宝网 编辑:程序博客网 时间:2024/05/22 03:11
表、栈和队列是最简单和最基本的三种数据结构,它们是ADT(抽象数据类型)的最基本的例子。下面分别说明。
表
一.ADT
数据集合D={a1,a2,……an}
关系集合R={<a1,a2>,<a2,a3>,<a3,a4>……<a(n-1),a(n)>}
基本操作:基本的增删改查(按需决定)
二.简单实现
1.数组顺序实现
采用定长的一维数组存储结构
优点:存取元素方便,时间代价为O(1)
缺点:插入删除的最坏情况以及平均情况时间代价均为O(n)(只有在最佳情况时才为O(1))
2.简单链表
通过指针把它的一串存储结点连成一个链
存储结点由两部分组成:
①data字段
②link字段
优点:避免了插入和删除的线性开销
缺点:l无法随机读取元素
ink字段仅仅指向后继结点,不能有效地找到前驱——双链表可以弥补这个问题
JavaAPI中的表
一.接口
1.java.util.Colleciton接口
2.java.util.Iterator接口
一般只有在需要立即使用一个迭代器时,我们才应该获取迭代器。
3.List接口
实现
1.ArrayList
提供了一种可增长数组的实现,它的add()和remove()方法均为O(n)操作
优点缺点:同数组实现
优点缺点:同数组实现
2.LinkedList
提供了双链表(保留到该表两端的引用)实现,它的get()方法为O(n)操作
对搜索而言,ArrayList与LinkedList均是低效的
栈
1.定义:栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶。
2.实现:
由于栈是一个表,所以任何实现表的方法都能实现栈。
ArrayList与LinkedList都支持栈操作
栈的应用
1.平衡符号
2.后缀表达式
3.中缀到后缀的转换
4.方法调用
队列
1.定义:队列是限制插入在一端(表尾)进行,而删除在另一端(表头)进行的表。
2.实现:
同栈一样,对于队列而言 ,任何的表的实现都是合法的。
比较好的方式:循环数组实现
0 0
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表、栈和队列
- 表,栈和队列
- 表、栈和队列
- 表、栈和队列
- 表,栈和队列
- 线性表、栈、队列和优先队列
- 栈和队列--队列
- 【栈和队列】队列
- 线性表 && 栈和队列
- 线性表、栈和队列
- java---表、栈和队列
- java---表、栈和队列
- java---表、栈和队列
- 第一个mysql存储过程
- hdu 1009 FatMouse' Trade
- RadGridView
- git 使用
- 十大紧缺行业发布,近半工作机会在一线
- 表、栈和队列
- VS中lib和dll
- Client访问控制和Cyrus sasl认证.doc
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 视频显示分辨率标准大全
- 文章标题
- [leetcode-30]Substring with Concatenation of All Words(java)
- 花生壳砸蛋怎么用