(MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright...

23
1 Copyright © 2001 [email protected] Java: Pilas y Colas / 1 3LODV &DUORV’HOJDGR.ORRV ,QJHQLHUtD7HOHPiWLFD 8QLY&DUORV,,,GH0DGULG Copyright © 2001 [email protected] Java: Pilas y Colas / 2 (MHPSOR

Transcript of (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright...

Page 1: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 2: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

2

Copyright © 2001 [email protected] Java: Pilas y Colas / 3

(MHPSOR

Copyright © 2001 [email protected] Java: Pilas y Colas / 4

(MHPSOR

Page 3: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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()

Page 4: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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�

(

)(

Page 5: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

5

Copyright © 2001 [email protected] Java: Pilas y Colas / 9

(MHPSOR�

FRPSUREDU�������������

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

Copyright © 2001 [email protected] Java: Pilas y Colas / 10

(MHPSOR�

FRPSUREDU�������������

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

(

Page 6: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

6

Copyright © 2001 [email protected] Java: Pilas y Colas / 11

(MHPSOR�

FRPSUREDU�������������

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

((

Copyright © 2001 [email protected] Java: Pilas y Colas / 12

(MHPSOR�

FRPSUREDU�������������

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

(

Page 7: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

7

Copyright © 2001 [email protected] Java: Pilas y Colas / 13

(MHPSOR�

FRPSUREDU�������������

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

((

Copyright © 2001 [email protected] Java: Pilas y Colas / 14

(MHPSOR�

FRPSUREDU�������������

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

(((

Page 8: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

8

Copyright © 2001 [email protected] Java: Pilas y Colas / 15

(MHPSOR�

FRPSUREDU�������������

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

((

Copyright © 2001 [email protected] Java: Pilas y Colas / 16

(MHPSOR�

FRPSUREDU�������������

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

(((

Page 9: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

9

Copyright © 2001 [email protected] Java: Pilas y Colas / 17

(MHPSOR�

FRPSUREDU�������������

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

((

Copyright © 2001 [email protected] Java: Pilas y Colas / 18

(MHPSOR�

FRPSUREDU�������������

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

(

Page 10: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

10

Copyright © 2001 [email protected] Java: Pilas y Colas / 19

(MHPSOR�

FRPSUREDU�������������

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

((

Copyright © 2001 [email protected] Java: Pilas y Colas / 20

(MHPSOR�

FRPSUREDU�������������

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

(

Page 11: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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;

}

Page 12: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 13: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 14: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 15: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 16: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 17: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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;

}

Page 18: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 19: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 20: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 21: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 22: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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

Page 23: (MHPSOR - Departamento de Ingeniería Telemáticacdk/curs/prog2/00-01/pilas-colas.pdf · Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 25,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public

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;

}