Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
1
Copyright © 2001 [email protected] Java: Pilas y Colas / 1
,QWHUID]�SDUD�SLODV
public interface Stack {
public int size();
public boolean isEmpty();
public void push(Object o);
public Object pop()throws StackEmptyException;
public Object top()throws StackEmptyException;
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 2
8Q�LQWHUID]�\
YDULDV�LPSOHPHQWDFLRQHV
ArrayStack
Stack
LinkedStack
2
Copyright © 2001 [email protected] Java: Pilas y Colas / 3
,PSOHPHQWDFLyQ
EDVDGD�HQ�DUUD\V
S
0 1 2 N-13 4 5
1
top
2
top
3
top
4
top
5
toptop
Copyright © 2001 [email protected] Java: Pilas y Colas / 4
,PSOHPHQWDFLyQ
EDVDGD�HQ�DUUD\V
public class ArrayStack implements Stack {
public static final int CAP=1000;
private int capacity;
private Object S[];
private int top=-1;
public ArrayStack(){this(CAP);}
public ArrayStack(int cap){capacity=cap;
S=new Object[capacity];}
3
Copyright © 2001 [email protected] Java: Pilas y Colas / 5
,PSOHPHQWDFLyQ
EDVDGD�HQ�DUUD\V
public int size(){return (top+1);}
public boolean isEmpty(){return (top<0);}
public Object top()throws StackEmptyException {
if (isEmpty())
throw new StackEmptyException("vacio"};
return S[top];}
Copyright © 2001 [email protected] Java: Pilas y Colas / 6
,PSOHPHQWDFLyQ
EDVDGD�HQ�DUUD\V
public void push(Object o)throws StackFullException {if (size()==capacity)
throw new StackFullException("lleno");
S[++top]=o;}
public Object pop()throws StackEmptyException {
Object el;
if (isEmpty())throw new StackEmptyException("vacio"};
el=S[top]; S[top--]=null; return el;}
}
4
Copyright © 2001 [email protected] Java: Pilas y Colas / 7
,PSOHPHQWDFLyQ�EDVDGD
HQ�OLVWDV�HQFDGHQDGDV
Madrid Miami Múnich
Copyright © 2001 [email protected] Java: Pilas y Colas / 8
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
class Node {private Object elem;
private Node next;
public Node(Object e, Node n) {elem=e; next=n;}
void setElem(Object e) {elem=e;}
void setNext(Node n) {next=n;}
Object getElem() {return elem;}
Node getNext() {return next;}}
5
Copyright © 2001 [email protected] Java: Pilas y Colas / 9
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public class LinkedStack implements Stack {
private Node top;
private int size;
public LinkedStack() {top=null; size=0;}
public int size() {return size;}
public boolean isEmpty() {return(top==null);}
Copyright © 2001 [email protected] Java: Pilas y Colas / 10
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public void push(Object e) {
Node n=New Node();
n.setElem(e);
n.setNext(top);
top=n;
size++;
}
6
Copyright © 2001 [email protected] Java: Pilas y Colas / 11
,QVHUFLyQ��push �
Moscú
Madrid Miami Múnich
top
Copyright © 2001 [email protected] Java: Pilas y Colas / 12
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public Object top()
throws StackEmptyException {
if (isEmpty())
throw new StackEmptyException("vacia");
return top.getElem();
}
7
Copyright © 2001 [email protected] Java: Pilas y Colas / 13
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public Object pop()throws StackEmptyException {
Object temp;
if (isEmpty())
throw new StackEmptyException("vacia");
temp=top.getElem();top=top.getNext();
size--;
return temp;
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 14
%RUUDGR��pop �
Madrid Miami MúnichMoscú
top
8
Copyright © 2001 [email protected] Java: Pilas y Colas / 15
3LODV�\�UHFXUVLyQ
❚ public static long fac (int n){if (n<=1)
return 1;else
return n*fac(n-1);}
Copyright © 2001 [email protected] Java: Pilas y Colas / 16
(MHFXFLyQ
❚ fac(4)
❚ 4*fac(3)
❚ 4*(3*fac(2))
❚ 4*(3*(2*fac(1)))
❚ 4*(3*(2*1)))
❚ 4*(3*2)
❚ 4*6
❚ 24
2*
3*4*
9
Copyright © 2001 [email protected] Java: Pilas y Colas / 17
&RODV
&DUORV�'HOJDGR�.ORRV
,QJHQLHUtD�7HOHPiWLFD
8QLY��&DUORV�,,,�GH�0DGULG
Copyright © 2001 [email protected] Java: Pilas y Colas / 18
(MHPSOR
❚ /D�FROD�GHO�DXWRE~V
❚ /D�FROD�GH�OD�LPSUHVRUD
10
Copyright © 2001 [email protected] Java: Pilas y Colas / 19
&DUDFWHUtVWLFDV
❚ (VWUXFWXUD�OLQHDO
❚ $FFHVR�GH�LQVHUFLyQ�SRU�XQ�H[WUHPR�\GH�HOLPLQDFLyQ�SRU�HO�RWUR�H[WUHPR
Copyright © 2001 [email protected] Java: Pilas y Colas / 20
,QWHUID]�SDUD�FRODV
public interface Queue {
public int size();
public boolean isEmpty();
public void enqueue(Object o);
public Object dequeue()throws QueueEmptyException;
public Object front()throws QueueEmptyException;
}
11
Copyright © 2001 [email protected] Java: Pilas y Colas / 21
8Q�LQWHUID]�\
YDULDV�LPSOHPHQWDFLRQHV
ArrayQueue
Queue
LinkedQueue
Copyright © 2001 [email protected] Java: Pilas y Colas / 22
,QVHUFLyQ��enqueue �
MoscúMadrid Miami Múnich
top tail
12
Copyright © 2001 [email protected] Java: Pilas y Colas / 23
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public void enqueue(Object e) {Node n=New Node();
n.setElem(e);
n.setNext(null);
if (size==0)
top=n;else
tail.setNext(n);
tail=n;
size++;}
Copyright © 2001 [email protected] Java: Pilas y Colas / 24
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public Object dequeue()throws QueueEmptyException {
Object temp;
if (isEmpty())
throw new QueueEmptyException("vacia");
temp=top.getElem();top=top.getNext();
size--;
if (size==0)
tail=nullreturn temp;
}