import java.util.Iterator;
/**
* 用链表实现一个简单的栈:先进后出
*/
public class LinkToStack<Item> implements Iterable<Item>{
public Node first; //栈顶元素
public int N = 0;
class Node{
Node next; //指向下一个元素
Item item; //链表的内容
}
/**
* 向栈中添加元素
*/
public void push(Item item){
Node oldNode = first; //oldNode为栈顶的下一个元素
first = new Node(); //创建新节点(栈顶元素)
first.next = oldNode; //指向下一个元素
first.item = item;
N++;
}
/**
* 删除栈顶元素
* @return
*/
public Item pop(){
Item item = first.item;
first = first.next; //删除栈顶元素后,第二个元素就变成了栈顶元素
N--;
return item;
}
/**
* 栈是否为空
* @return
*/
public boolean isEmpty(){
return N==0;
}
/**
* 栈的大小
* @return
*/
public int size(){
return N;
}
//下面部分保证栈可以遍历迭代。也可以不要这部分,
//毕竟是实现一个简单的栈,只要保证先进后出即可
public Iterator<Item> iterator() {
return new ListIterator<Item>() ;
}
public class ListIterator<Item> implements Iterator<Item>{
private Node current = first;
public boolean hasNext() {
return current!=null;
}
public Item next() {
Item item = (Item) current.item;
current = current.next;
return item;
}
public void remove() {} //暂时不实现该方法,迭代的时候最好不要删除元素
}
}
使用链表实现一个简单的栈
最新推荐文章于 2022-03-03 20:10:54 发布