package Cap1;
import java.util.Iterator;
import edu.princeton.cs.introcs.StdOut;
import edu.princeton.cs.introcs.StdRandom;
public class Steque<Item> implements Iterable<Item>{
/**
* @param args
*/
private Node first;
private class Node{
Item item;
Node next;
}
public void push(Item item){
Node node = new Node();
node.item = item;
if(first == null){
first = node;
return;
}
node.next = first;
first = node;
}
public Item pop(Item item){
Node node = first;
first = first.next;
node.next = null;
return node.item;
}
public void enqueue(Item item){
Node node = new Node();
node.item = item;
if(first == null){
first = node;
return;
}
Node cur = first;
while(cur.next!=null){
cur = cur.next;
}
cur.next = node;
node.next = null;
}
@Override
public Iterator<Item> iterator() {
// TODO Auto-generated method stub
return new StequeIterator();
}
private class StequeIterator implements Iterator<Item>{
private Node cur = first;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return cur != null;
}
@Override
public Item next() {
// TODO Auto-generated method stub
Item item = cur.item;
cur = cur.next;
return item;
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Steque<Double> s = new Steque<Double>();
for(int i=0;i<10;i++)
s.push(i*1.0);
for(int i=0;i<10;i++)
s.enqueue(i*1.0);
for(Double d : s)
StdOut.println(d);
}
}
9.0
8.0
7.0
6.0
5.0
4.0
3.0
2.0
1.0
0.0
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0