Top Banner
CS32 Discussion Week 4 Muhao Chen [email protected] http://yellowstone.cs.ucla.edu/~muhao / 1
44

CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen [email protected] muhao/ 1

Jul 29, 2018

Download

Documents

lamhanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

CS32 DiscussionWeek 4

Muhao Chen

[email protected]

http://yellowstone.cs.ucla.edu/~muhao/

1

Page 2: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Outline

•Stack & Queue

•Inheritance

•Polymorphism

2

Page 3: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Stack and Queue

3

Page 4: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Stack (FILO)

4

Page 5: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Applications of Stack

•Stack memory: that’s how function-call works.

•Compiling mathematical expressions: infix expression, matching brackets

•Depth-first-search

5

Page 6: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Implementation of Stacks

•Container: linked list, (or dynamic array).

•If linked list:•Push: Insert node before head.•Pop: remove head.•Top: read head.

•Count() \ size(): online maintain (with a member variable).

6

Page 7: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Queue (FIFO)

7

Page 8: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Applications of Queues

•Windowed data streams.

•Process scheduling (Round Robin)

•Breadth-first-search

8

Page 9: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Implementation of Queues

•Container: linked list with a tail pointer.

•Enqueue: Insert node after tail.

•Dequeue: remove head.

•Front(), back(): read head / read tail

•Count() \ size(): online maintain (with a member variable).

9

Page 10: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Deque – double-ended queue

10

class Deque{public:bool push_front(const ItemType& item);bool push_back(const ItemType& item);bool pop_front(const ItemType& item);bool pop_back(const ItemType& item);bool empty() const; // true if emptyint count() const; // number of itemsprivate:! ! // Some data structure that keeps the items.};

Page 11: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Implementation

•Standard library uses dynamic array as its container•We can also use doubly linked list.

•STL also uses deque as the container of stack and queue class under some configurations.

11

Page 12: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Question

•How to implement a queue with two stacks?

12

Page 13: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Solution

13

class Queue<E>{public:void enqueue(E item) {inbox.push(item);

}

E dequeue() {if (outbox.isEmpty()) {while (!inbox.isEmpty()) {outbox.push(inbox.top());inbox.pop();

}}E rst = outbox.top()outbox.pop();return rst;

}private:Stack<E> inbox, outbox;

};

Page 14: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Stack, Queue, and Deque in C++ STL

•http://www.cplusplus.com/reference/stack/stack/

•http://www.cplusplus.com/reference/queue/queue/

•http://www.cplusplus.com/reference/deque/deque/

14

Page 15: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Inheritance

15

Page 16: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

16

Page 17: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

17

Page 18: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

18

Page 19: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

19

Page 20: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

20

Page 21: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

21

Page 22: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

22

Page 23: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

23

Page 24: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

24

Page 25: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

25

Incorrect

Page 26: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

26

Page 27: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

27

Page 28: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

28

Page 29: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

29

Page 30: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

30

Page 31: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

31

Page 32: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

32

Page 33: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Polymorphism

33

Page 34: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

34

Page 35: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

35

Page 36: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

36

Page 37: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

37

Will use the appropriate version of speak() according to the class of the pointee.

Page 38: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

38

Page 39: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

39

Page 40: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

40

Page 41: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

41

Page 42: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

42

Page 43: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

43

Page 44: CS32 Discussion Week 4 - yellowstone.cs.ucla.eduyellowstone.cs.ucla.edu/~muhao/cs32s18/week4.pdf · CS32 Discussion Week 4 Muhao Chen muhaochen@ucla.edu muhao/ 1

Bugs in your software are actually special features :)

44