java实现栈结构解析
来源:互联网 发布:linux查找软件命令 编辑:程序博客网 时间:2024/06/11 15:37
学习数据结构的时候,大多数我们使用C或C++来编程,因为C或C++中有指针和地址,有一次上实验课检查学生的实验时候,检查到一同学使用JAVA实现的,当时的第一反应是问他是不是使用JAVA中的容器实现的,因为JAVA中有相应的Stack类,他说不是,所以认真的检查了他的实现,发现其实即使使用JAVA自己去实现这个结构也是很简单的,不过需要弄清楚一些关系,比如对于对象的引用其实质就是C中说的指针
实现栈之前我们需要定义一个类(程序一所示)来存储栈的节点信息,类似C中说的Struct结构体。关于这个节点类有
程序一:
class Node<T>{
T data;//记录节点的数据
Node<T> top;//记录指向此节点的那个节点元素,相当于记录当前节点的前一个节点信息。
public Node() {
this.data = null;
this.top = this;
}
Node(T data, Node<T> node){
this.data = data;
this.top = node;
}
}
在C语言中我们使用Struct结构体定义数据如程序二所示
程序二:
struct node{
int data;
struct node *next;//记录下一个元素的指针
}nodes;
程序一中我们使用泛型来扩大程序的试用范围,从中也可以发现利用JAVA实现的好处,提高代码的复用性,不然像C语言中如果数据存储的为整形,我们需要定义data为整形,如果数据类型换为浮点型,定义的结构体就无法试用,需要重新定义过。
程序三:
public class Stack<U> {
private Node<U> stack = new Node<U>();//调用生成节点的默认构造函数来生成
void push(U data){
stack.top = new Node<U>(data, stack.top);//构造插入节点的时候,同时把栈顶元素传进去,这样在出栈的时候可以找到出栈元素所指向的前节点元素
}
U pop(){
U result = stack.top.data;
if(!this.end()){
stack.top = stack.top.top;
}
return result;
}
boolean end(){
return stack.top.data == null;
}
}
程序三中定义了一个栈,其中定义一个全局变量stack来记录栈顶,每次构造新节点的时候,同时把当前的栈顶元素传进去,相当于虽然是尾插法插入元素,但是被插入的元素有一个记录下当前栈顶的引用,以此来方便出栈时候的操作。
- java实现栈结构解析
- java实现栈结构
- JAVA实现栈结构
- Java实现栈结构
- Java - 树状结构数据解析
- Java实现栈结构详细代码
- 【数据结构和算法】java实现栈结构
- Java 实现树形结构
- 图结构 java实现
- JAVA实现图结构
- Java实现图结构
- java 实现解析 xml
- Java实现参数解析
- java类的结构的内存解析
- Java class 文件结构及解析
- Java堆结构PriorityQueue完全解析
- java解析C结构体框架
- 树结构实现java+js
- poj 3189 Steady Cow Assignment 二分图多重匹配
- Linux USB驱动框架分析
- 切换到MarkDown编辑器
- perf Examples
- Spark aggregator ExternalIterator 流程图
- java实现栈结构解析
- 关于thinkphp中的验证码生成与刷新
- windows下python监控系统服务
- hdoj Phone List 1671 (字典树记录前缀)
- HDFS 简介
- shuoj-小6爱夜跑--Floyd记录多个最短路径
- 获取验证码函数
- 抽象数据类型
- App Nap