您的位置:首页 > 理论基础 > 数据结构算法

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;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: