java实现栈,队列数据结构
2012-07-16 23:52
681 查看
//java实现栈
public class StackForInt<T> {
// 储存数据的栈
private Node<T> StackForInt[];
// 栈的最大容量
private int maxSize;
// 栈的当前容量
private int size;
//分别保存node中最大值和最小值,在栈push和pop时都要来保存这个值,特别是在pop时,当出栈的数是最大或者最小时,就需要更新
//maxNode,minNode.代码中还没有实现,后续增加。
private T maxNode;
private T minNode;
public T getMax(){
return maxNode;
}
public T getMin(){
return minNode;
}
// 不传参数,默认栈的最大容量为100
public StackForInt() {
this(100);
}
public StackForInt(int maxSize) {
// 如果传入的参数小于或等于0,则设置最大容量为100
if (maxSize <= 0)
maxSize = 100;
this.maxSize = maxSize;
}
// 初始化栈,在堆中先申请好内存空间
public void initStackForInt() {
Node<T>[] StackForIntNodes = new Node[maxSize];
StackForInt = StackForIntNodes;
for (int i = 0; i < maxSize; i++) {
StackForInt[i] = new Node<T>();
}
// 栈的当前大小为0
size = 0;
}
// 栈的基本方法之一,获得栈顶元素
public Node<T> getTop() {
// 栈中没有元素,则返回空
if (size == 0)
return null;
return StackForInt[size-1];
}
// 栈的基本方法之一,入栈
public boolean push(Node<T> StackForIntNode) {
// 栈已满,入栈失败
if (size >= maxSize)
return false;
size++;
StackForInt[size - 1] = StackForIntNode;
return true;
}
// 栈的基本方法之一,出栈
public Node<T> pop() {
// 如果栈已空,则返回null
if (size <= 0)
return null;
size--;
return StackForInt[size];
}
// 栈是否为空
public boolean isEmpty() {
if (size <= 0)
return true;
return false;
}
// 栈的基本方法之一,遍历栈
public void traverse() {
for (int i = 0; i < size; i++) {
System.out.println(StackForInt[i].get());
}
}
/**
* @param args
*/
public static void main(String[] args) {
StackForInt<String> StackForInt = new StackForInt<String>();
StackForInt.initStackForInt();
StackForInt.push(new Node<String>("Anybody1"));
StackForInt.push(new Node<String>("Anybody2"));
StackForInt.push(new Node<String>("Anybody3"));
StackForInt.traverse();
}
static class Node <T>{
//要存储的信息
private T nodeinfo;
public Node(){
this(null);
}
public Node(T info){
this.nodeinfo = info;
}
//set方法
public void set(T info){
this.nodeinfo = info;
}
//get方法
public T get(){
return nodeinfo;
}
}
}
public class StackForInt<T> {
// 储存数据的栈
private Node<T> StackForInt[];
// 栈的最大容量
private int maxSize;
// 栈的当前容量
private int size;
//分别保存node中最大值和最小值,在栈push和pop时都要来保存这个值,特别是在pop时,当出栈的数是最大或者最小时,就需要更新
//maxNode,minNode.代码中还没有实现,后续增加。
private T maxNode;
private T minNode;
public T getMax(){
return maxNode;
}
public T getMin(){
return minNode;
}
// 不传参数,默认栈的最大容量为100
public StackForInt() {
this(100);
}
public StackForInt(int maxSize) {
// 如果传入的参数小于或等于0,则设置最大容量为100
if (maxSize <= 0)
maxSize = 100;
this.maxSize = maxSize;
}
// 初始化栈,在堆中先申请好内存空间
public void initStackForInt() {
Node<T>[] StackForIntNodes = new Node[maxSize];
StackForInt = StackForIntNodes;
for (int i = 0; i < maxSize; i++) {
StackForInt[i] = new Node<T>();
}
// 栈的当前大小为0
size = 0;
}
// 栈的基本方法之一,获得栈顶元素
public Node<T> getTop() {
// 栈中没有元素,则返回空
if (size == 0)
return null;
return StackForInt[size-1];
}
// 栈的基本方法之一,入栈
public boolean push(Node<T> StackForIntNode) {
// 栈已满,入栈失败
if (size >= maxSize)
return false;
size++;
StackForInt[size - 1] = StackForIntNode;
return true;
}
// 栈的基本方法之一,出栈
public Node<T> pop() {
// 如果栈已空,则返回null
if (size <= 0)
return null;
size--;
return StackForInt[size];
}
// 栈是否为空
public boolean isEmpty() {
if (size <= 0)
return true;
return false;
}
// 栈的基本方法之一,遍历栈
public void traverse() {
for (int i = 0; i < size; i++) {
System.out.println(StackForInt[i].get());
}
}
/**
* @param args
*/
public static void main(String[] args) {
StackForInt<String> StackForInt = new StackForInt<String>();
StackForInt.initStackForInt();
StackForInt.push(new Node<String>("Anybody1"));
StackForInt.push(new Node<String>("Anybody2"));
StackForInt.push(new Node<String>("Anybody3"));
StackForInt.traverse();
}
static class Node <T>{
//要存储的信息
private T nodeinfo;
public Node(){
this(null);
}
public Node(T info){
this.nodeinfo = info;
}
//set方法
public void set(T info){
this.nodeinfo = info;
}
//get方法
public T get(){
return nodeinfo;
}
}
}
相关文章推荐
- java 实现数据结构之队列
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- java数据结构:队列与实现
- 【数据结构】之队列的java实现(一)
- Java关于数据结构的实现:表、栈与队列
- java 实现数据结构之队列
- 队列数据结构Java实现
- java中的数据结构---栈、队列和树的实现
- 【数据结构】之队列的java实现(二)
- Java中链表、堆栈、队列、二叉树、散列表等数据结构的实现
- 数据结构之基于Java的链接队列实现
- 数据结构之优先队列--二叉堆(Java实现)
- 数据结构Java实现——②队列--->队列的“奇葩”一循环顺序队列
- 数据结构Java实现——②队列-->队列的“奇葩”二 优先级队列
- 数据结构学习----链式队列(Java实现)
- 【数据结构】之队列的java实现(一)
- java 实现数据结构之队列
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 算法与数据结构-栈与队列 讲解与java代码实现