SLIDE 1
Stack: Resize scale by constant Original size c then increase by c - - PowerPoint PPT Presentation
Stack: Resize scale by constant Original size c then increase by c - - PowerPoint PPT Presentation
Stack: Resize scale by constant Original size c then increase by c when full Run time to push n items into an empty stack? Number of resizes: Cost of i th resize: Total resize cost: 1 Stack summary Linked list implementation: Array
SLIDE 2
SLIDE 3
Queue abstract data type
class Queue{ public: Queue(); LIT dequeue(); void enqueue(const LIT & e); bool empty() const; private: ... };
enqueue(1) enqueue(2) enqueue(3) dequeue() dequeue() enqueue(4) dequeue() enqueue(5) dequeue() dequeue()
3
SLIDE 4
Queue: Linked list implementation
NULL e d c b a
class Queue{ public: Queue(); LIT dequeue(); void enqueue(const LIT & e); bool empty() const; private: struct Node{ LIT data; Node * next; ...}; Node * entry; Node * exit; int size; };
Runtime:
LIT Queue<LIT>::dequeue(){ assert(!empty()); LIT ret = Node * temp = =
- >next;
delete temp; return ret; } void Queue<LIT>:: enqueue(const LIT & e){ if (empty()) entry = exit = new Node(e); else
- >next = new Node(e);
=
- >next;
} 4
SLIDE 5
Queue: Array implementation
a b c d 5 size - 1 9 exit = 5 entry = 9 class Queue{ public: Queue(); LIT dequeue(); void enqueue(const LIT & e); bool empty() const; private: LIT * items; int entry; int exit; int size; bool isFull() const; void resize(); };
Runtime:
LIT Queue<LIT>::dequeue(){ assert(!empty()); LIT ret = items[exit]; exit = (exit + 1) % size; return ret; } void Queue<LIT>:: enqueue(const LIT & e){ if (isFull()) resize(); items[entry] = e; entry = (entry + 1) % size; } 5
SLIDE 6