,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 [email protected] Java:...

12
1 Copyright © 2001 [email protected] Java: Pilas y Colas / 1 ,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 [email protected] Java: Pilas y Colas / 2 8QLQWHUID]\ YDULDVLPSOHPHQWDFLRQHV ArrayStack Stack LinkedStack

Transcript of ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 [email protected] Java:...

Page 1: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 2: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 3: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

}

Page 4: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 5: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

}

Page 6: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

}

Page 7: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 8: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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*

Page 9: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 10: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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;

}

Page 11: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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

Page 12: ,QWHUID]SDUDSLODVcdk/curs/prog2/00-01/pilas-colas2.pdf · 3 Copyright © 2001 cdk@it.uc3m.es Java: Pilas y Colas / 5,PSOHPHQWDFLyQ EDVDGDHQDUUD\V public int size() {return (top+1);}

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;

}