Académique Documents
Professionnel Documents
Culture Documents
&DUORV'HOJDGR.ORRV
,QJHQLHUtD7HOHPiWLFD
8QLY&DUORV,,,GH0DGULG
(MHPSOR
1
(MHPSOR
(MHPSOR
2
&DUDFWHUtVWLFDV
❚ (VWUXFWXUDOLQHDO
❚ $FFHVRGHLQVHUFLyQ\HOLPLQDFLyQ
SRUXQVRORH[WUHPR
0pWRGRVSULQFLSDOHV
❚ 0HWHUSRUXQH[WUHPRpush(x)
❚ 6DFDUSRUHOPLVPRH[WUHPRpop()
3
(MHPSOR
&RPSUREDUSDUpQWHVLV
❚ %LHQ ❚ 0DO
❙ ❙
❙ ❙
❙ ❙
❚ 5HJODV
❙ %iVLFR
❙ 6HFXHQFLDFLyQ
❙ $QLGDPLHQWR
Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 7
(MHPSOR
&RPSUREDUSDUpQWHVLV
❚ 5HJODV
❙ &DGDYH]TXHQRVHQFRQWUHPRV (
ORPHWHPRVHQODSLOD
❙ &DGDYH]TXHQRVHQFRQWUHPRV )
VDFDPRVHOVXSHULRUGHODSLOD
(
❙ /DFDGHQDGHSDUpQWHVLVHVFRUUHFWD
VLODSLODHVWiYDFtD
DODFDEDUGHUHFRUUHUWRGDODFDGHQD
4
(MHPSOR
FRPSUREDU
(()(()())())
(MHPSOR
FRPSUREDU
(()(()())())
5
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(MHPSOR
FRPSUREDU
(()(()())())
6
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(
7
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(
8
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(MHPSOR
FRPSUREDU
(()(()())())
9
(MHPSOR
FRPSUREDU
(()(()())())
(
(
(MHPSOR
FRPSUREDU
(()(()())())
10
(MHPSOR
FRPSUREDU
(()(()())())
,QWHUID]SDUDSLODV
11
8QLQWHUID]\
YDULDVLPSOHPHQWDFLRQHV
Stack
ArrayStack LinkedStack
,PSOHPHQWDFLyQ
EDVDGDHQDUUD\V
S
toptoptoptoptoptop
1 2 3 4 5
0 1 2 3 4 5 N-1
12
,PSOHPHQWDFLyQ
EDVDGDHQDUUD\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];}
,PSOHPHQWDFLyQ
EDVDGDHQDUUD\V
public int size()
{return (top+1);}
13
,PSOHPHQWDFLyQ
EDVDGDHQDUUD\V
public void push(Object o)
throws StackFullException {
if (size()==capacity)
throw new StackFullException("lleno");
S[++top]=o;}
,PSOHPHQWDFLyQEDVDGD
HQOLVWDVHQFDGHQDGDV
14
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
class Node {
private Object elem;
private Node next;
public Node(Object e, Node n) {
elem=e; next=n;}
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
public class LinkedStack implements Stack {
15
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
,QVHUFLyQpush
top
Moscú
16
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
public Object pop()
throws StackEmptyException {
Object temp;
if (isEmpty())
throw new StackEmptyException("vacia");
temp=top.getElem();
top=top.getNext();
size--;
return temp;
}
17
%RUUDGRpop
top
3LODV\UHFXUVLyQ
18
(MHFXFLyQ
❚ fac(4)
❚ 4*fac(3)
❚ 4*(3*fac(2))
❚ 4*(3*(2*fac(1)))
❚ 4*(3*(2*1))) 2*
❚ 4*(3*2) 3*
4*
❚ 4*6
❚ 24
&RODV
&DUORV'HOJDGR.ORRV
,QJHQLHUtD7HOHPiWLFD
8QLY&DUORV,,,GH0DGULG
19
(MHPSOR
❚ /DFRODGHODXWRE~V
❚ /DFRODGHODLPSUHVRUD
&DUDFWHUtVWLFDV
❚ (VWUXFWXUDOLQHDO
❚ $FFHVRGHLQVHUFLyQSRUXQH[WUHPR\
GHHOLPLQDFLyQSRUHORWURH[WUHPR
20
,QWHUID]SDUDFRODV
8QLQWHUID]\
YDULDVLPSOHPHQWDFLRQHV
Queue
ArrayQueue LinkedQueue
21
,QVHUFLyQenqueue
top tail
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
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 cdk@it.uc3m.es Java: Pilas y Colas / 44
22
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
public Object dequeue()
throws QueueEmptyException {
Object temp;
if (isEmpty())
throw new QueueEmptyException("vacia");
temp=top.getElem();
top=top.getNext();
size--;
if (size==0)
tail=null
return temp;
}
Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 45
23