(MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright...
Transcript of (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright...
1
Copyright © 2001 [email protected] Java: Pilas y Colas / 1
3LODV
&DUORV�'HOJDGR�.ORRV
,QJHQLHUtD�7HOHPiWLFD
8QLY��&DUORV�,,,�GH�0DGULG
Copyright © 2001 [email protected] Java: Pilas y Colas / 2
(MHPSOR
2
Copyright © 2001 [email protected] Java: Pilas y Colas / 3
(MHPSOR
Copyright © 2001 [email protected] Java: Pilas y Colas / 4
(MHPSOR
3
Copyright © 2001 [email protected] Java: Pilas y Colas / 5
&DUDFWHUtVWLFDV
❚ (VWUXFWXUD�OLQHDO
❚ $FFHVR�GH�LQVHUFLyQ�\�HOLPLQDFLyQSRU�XQ�VROR�H[WUHPR
Copyright © 2001 [email protected] Java: Pilas y Colas / 6
0pWRGRV�SULQFLSDOHV
❚ 0HWHU�SRU�XQ�H[WUHPR��push(x)
❚ 6DFDU�SRU�HO�PLVPR�H[WUHPR��pop()
4
Copyright © 2001 [email protected] Java: Pilas y Colas / 7
(MHPSOR�
&RPSUREDU�SDUpQWHVLV
❚ %LHQ�❙
❙ ��
❙ ��������
❚ 0DO�❙ ��
❙ ���
❙ ���
❚ 5HJODV�❙ %iVLFR����
❙ 6HFXHQFLDFLyQ������
❙ $QLGDPLHQWR������
Copyright © 2001 [email protected] Java: Pilas y Colas / 8
(MHPSOR�
&RPSUREDU�SDUpQWHVLV
❚ 5HJODV�
❙ &DGD�YH]�TXH�QRV�HQFRQWUHPRVOR�PHWHPRV�HQ�OD�SLOD�
❙ &DGD�YH]�TXH�QRV�HQFRQWUHPRVVDFDPRV�HO������VXSHULRU�GH�OD�SLOD�
❙ /D�FDGHQD�GH�SDUpQWHVLV�HV�FRUUHFWD�VL�OD�SLOD�HVWi�YDFtDDO�DFDEDU�GH�UHFRUUHU�WRGD�OD�FDGHQD�
(
)(
5
Copyright © 2001 [email protected] Java: Pilas y Colas / 9
(MHPSOR�
FRPSUREDU�������������
(()(()())())
Copyright © 2001 [email protected] Java: Pilas y Colas / 10
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(
6
Copyright © 2001 [email protected] Java: Pilas y Colas / 11
(MHPSOR�
FRPSUREDU�������������
(()(()())())
((
Copyright © 2001 [email protected] Java: Pilas y Colas / 12
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(
7
Copyright © 2001 [email protected] Java: Pilas y Colas / 13
(MHPSOR�
FRPSUREDU�������������
(()(()())())
((
Copyright © 2001 [email protected] Java: Pilas y Colas / 14
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(((
8
Copyright © 2001 [email protected] Java: Pilas y Colas / 15
(MHPSOR�
FRPSUREDU�������������
(()(()())())
((
Copyright © 2001 [email protected] Java: Pilas y Colas / 16
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(((
9
Copyright © 2001 [email protected] Java: Pilas y Colas / 17
(MHPSOR�
FRPSUREDU�������������
(()(()())())
((
Copyright © 2001 [email protected] Java: Pilas y Colas / 18
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(
10
Copyright © 2001 [email protected] Java: Pilas y Colas / 19
(MHPSOR�
FRPSUREDU�������������
(()(()())())
((
Copyright © 2001 [email protected] Java: Pilas y Colas / 20
(MHPSOR�
FRPSUREDU�������������
(()(()())())
(
11
Copyright © 2001 [email protected] Java: Pilas y Colas / 21
(MHPSOR�
FRPSUREDU�������������
(()(()())())
&RUUHFWR� +HPRV UHFRUULGR WRGD OD
FDGHQD \ OD SLOD HVWi YDFtD
Copyright © 2001 [email protected] Java: Pilas y Colas / 22
,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;
}
12
Copyright © 2001 [email protected] Java: Pilas y Colas / 23
8Q�LQWHUID]�\
YDULDV�LPSOHPHQWDFLRQHV
ArrayStack
Stack
LinkedStack
Copyright © 2001 [email protected] Java: Pilas y Colas / 24
,PSOHPHQWDFLyQ
EDVDGD�HQ�DUUD\V
S
0 1 2 N-13 4 5
1
top
2
top
3
top
4
top
5
toptop
13
Copyright © 2001 [email protected] Java: Pilas y Colas / 25
,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];}
Copyright © 2001 [email protected] Java: Pilas y Colas / 26
,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];}
14
Copyright © 2001 [email protected] Java: Pilas y Colas / 27
,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;}
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 28
,PSOHPHQWDFLyQ�EDVDGD
HQ�OLVWDV�HQFDGHQDGDV
Madrid Miami Múnich
15
Copyright © 2001 [email protected] Java: Pilas y Colas / 29
,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;}
Object getNext() {return next;}}
Copyright © 2001 [email protected] Java: Pilas y Colas / 30
,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);}
16
Copyright © 2001 [email protected] Java: Pilas y Colas / 31
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public void push(Object e) {
Node n=New Node();
n.setElem(e);
n.setNext(top);
top=n;
size++;
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 32
,QVHUFLyQ��push �
Moscú
Madrid Miami Múnich
top
17
Copyright © 2001 [email protected] Java: Pilas y Colas / 33
,PSOHPHQWDFLyQ
EDVDGD�HQ�OLVWDV
public Object top()
throws StackEmptyException {
if (isEmpty())
throw new StackEmptyException("vacia");
return top.getElem();
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 34
,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;
}
18
Copyright © 2001 [email protected] Java: Pilas y Colas / 35
%RUUDGR��pop �
Madrid Miami MúnichMoscú
top
Copyright © 2001 [email protected] Java: Pilas y Colas / 36
3LODV�\�UHFXUVLyQ
❚ public static long fac (int n){if (n<=1)
return 1;else
return n*fac(n-1);}
19
Copyright © 2001 [email protected] Java: Pilas y Colas / 37
(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*
Copyright © 2001 [email protected] Java: Pilas y Colas / 38
&RODV
&DUORV�'HOJDGR�.ORRV
,QJHQLHUtD�7HOHPiWLFD
8QLY��&DUORV�,,,�GH�0DGULG
20
Copyright © 2001 [email protected] Java: Pilas y Colas / 39
(MHPSOR
❚ /D�FROD�GHO�DXWRE~V
❚ /D�FROD�GH�OD�LPSUHVRUD
Copyright © 2001 [email protected] Java: Pilas y Colas / 40
&DUDFWHUtVWLFDV
❚ (VWUXFWXUD�OLQHDO
❚ $FFHVR�GH�LQVHUFLyQ�SRU�XQ�H[WUHPR�\GH�HOLPLQDFLyQ�SRU�HO�RWUR�H[WUHPR
21
Copyright © 2001 [email protected] Java: Pilas y Colas / 41
,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;
}
Copyright © 2001 [email protected] Java: Pilas y Colas / 42
8Q�LQWHUID]�\
YDULDV�LPSOHPHQWDFLRQHV
ArrayQueue
Queue
LinkedQueue
22
Copyright © 2001 [email protected] Java: Pilas y Colas / 43
,QVHUFLyQ��enqueue �
MoscúMadrid Miami Múnich
top tail
Copyright © 2001 [email protected] Java: Pilas y Colas / 44
,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++;}
23
Copyright © 2001 [email protected] Java: Pilas y Colas / 45
,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;
}