package 数据结构.stack;
import java.util.Iterator;
public class StackNode<Item> implements Iterable {
Node first;
int N=0;
private class Node{
Item item;
Node next;
}
public boolean isEmpty(){
return N==0;
}
public int size(){
return N;
}
public void push(Item item){
Node oldfirst = first;
first=new Node();
first.item=item;
first.next=oldfirst;
N++;
}
public Item pop(){
Item item=first.item;
first=first.next;
N--;
return item;
}
//按照放入顺序来计算k。
public void delete(int k){
Node temp = first;
boolean delete=false;
if (k==N){
first=first.next;
N--;
delete=true;
}else if (k>0&&k<N){
//如果是Queue需要调整for循环并k-1。
for (int i = N-1; i > 0; i--) {
temp = temp.next;
if (i == k+1 ) {
temp.next = temp.next.next;
delete=true;
N--;
break;
}
}
} else{
System.out.println("不存在第"+k+"个元素");
}
if (delete) System.out.println("删除成功");
}
public Iterator iterator() {
return new StackNodeIterator();
}
private class StackNodeIterator<Item> implements Iterator<Item> {
Node oldFirst=first;
int j=N;
@Override
public boolean hasNext() {
return j>0;
}
@Override
public Item next() {
Item item=(Item) oldFirst.item;
oldFirst= oldFirst.next;
j--;
return item;
}
@Override
public void remove() {
}
}
}
为Stack链表添加delete方法(1.3.20)
最新推荐文章于 2024-10-18 13:02:57 发布