Vous êtes sur la page 1sur 23

3LODV

&DUORV'HOJDGR.ORRV
,QJHQLHUtD7HOHPiWLFD
8QLY&DUORV,,,GH0DGULG

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 1

(MHPSOR

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 2

1
(MHPSOR

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 3

(MHPSOR

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 4

2
&DUDFWHUtVWLFDV

❚ (VWUXFWXUDOLQHDO
❚ $FFHVRGHLQVHUFLyQ\HOLPLQDFLyQ
SRUXQVRORH[WUHPR

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5

0pWRGRVSULQFLSDOHV

❚ 0HWHUSRUXQH[WUHPRpush(x)
❚ 6DFDUSRUHOPLVPRH[WUHPRpop()

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 6

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

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 8

4
(MHPSOR
FRPSUREDU

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 9

(MHPSOR
FRPSUREDU

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 10

5
(MHPSOR
FRPSUREDU

(()(()())())

(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 11

(MHPSOR
FRPSUREDU

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 12

6
(MHPSOR
FRPSUREDU

(()(()())())

(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 13

(MHPSOR
FRPSUREDU

(()(()())())
(
(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 14

7
(MHPSOR
FRPSUREDU

(()(()())())

(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 15

(MHPSOR
FRPSUREDU

(()(()())())
(
(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 16

8
(MHPSOR
FRPSUREDU

(()(()())())

(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 17

(MHPSOR
FRPSUREDU

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 18

9
(MHPSOR
FRPSUREDU

(()(()())())

(
(

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 19

(MHPSOR
FRPSUREDU

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 20

10
(MHPSOR
FRPSUREDU

&RUUHFWR +HPRV UHFRUULGR WRGD OD


FDGHQD \ OD SLOD HVWi YDFtD

(()(()())())

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 21

,QWHUID]SDUDSLODV

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 cdk@it.uc3m.es Java: Pilas y Colas / 22

11
8QLQWHUID]\
YDULDVLPSOHPHQWDFLRQHV

Stack

ArrayStack LinkedStack

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 23

,PSOHPHQWDFLyQ
EDVDGDHQDUUD\V
S
toptoptoptoptoptop

1 2 3 4 5
0 1 2 3 4 5 N-1

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 24

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];}

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25

,PSOHPHQWDFLyQ
EDVDGDHQDUUD\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 cdk@it.uc3m.es Java: Pilas y Colas / 26

13
,PSOHPHQWDFLyQ
EDVDGDHQDUUD\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 cdk@it.uc3m.es Java: Pilas y Colas / 27
}

,PSOHPHQWDFLyQEDVDGD
HQOLVWDVHQFDGHQDGDV

Madrid Miami Múnich

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 28

14
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
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 cdk@it.uc3m.es Java: Pilas y Colas / 29

,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
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 cdk@it.uc3m.es Java: Pilas y Colas / 30

15
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV

public void push(Object e) {


Node n=New Node();
n.setElem(e);
n.setNext(top);
top=n;
size++;
}

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 31

,QVHUFLyQ push

top

Madrid Miami Múnich

Moscú

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 32

16
,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV

public Object top()


throws StackEmptyException {
if (isEmpty())
throw new
StackEmptyException("vacia");
return top.getElem();
}

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 33

,PSOHPHQWDFLyQ
EDVDGDHQOLVWDV
public Object pop()
throws StackEmptyException {
Object temp;
if (isEmpty())
throw new StackEmptyException("vacia");
temp=top.getElem();
top=top.getNext();
size--;
return temp;
}

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 34

17
%RUUDGR pop

top

Moscú Madrid Miami Múnich

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 35

3LODV\UHFXUVLyQ

❚ public static long fac (int n)


{if (n<=1)
return 1;
else
return n*fac(n-1);
}

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 36

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

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 37

&RODV

&DUORV'HOJDGR.ORRV
,QJHQLHUtD7HOHPiWLFD
8QLY&DUORV,,,GH0DGULG

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 38

19
(MHPSOR

❚ /DFRODGHODXWRE~V
❚ /DFRODGHODLPSUHVRUD

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 39

&DUDFWHUtVWLFDV

❚ (VWUXFWXUDOLQHDO
❚ $FFHVRGHLQVHUFLyQSRUXQH[WUHPR\
GHHOLPLQDFLyQSRUHORWURH[WUHPR

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 40

20
,QWHUID]SDUDFRODV

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 cdk@it.uc3m.es Java: Pilas y Colas / 41

8QLQWHUID]\
YDULDVLPSOHPHQWDFLRQHV

Queue

ArrayQueue LinkedQueue

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 42

21
,QVHUFLyQ enqueue

top tail

Madrid Miami Múnich Moscú

Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 43

,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

Vous aimerez peut-être aussi