Computer notes data structures - 9

26
Class No.09 Data Structures http://ecomputernotes. com

description

 

Transcript of Computer notes data structures - 9

Page 1: Computer notes   data structures - 9

Class No.09

Data Structures

http://ecomputernotes.com

Page 2: Computer notes   data structures - 9

Memory Organization

Code

Static data

Stack

Heap

Process 1(browser)

Process 3(word)

Process 4(excel)

Windows OS

Process 2(dev-c++)

http://ecomputernotes.com

Page 3: Computer notes   data structures - 9

Stack Layout during a call Here is stack layout when function F calls

function G:

Parameters(F)

Local variables(F)

Return address(F)

Parameters(G)

Parameters(F)

Local variables(F)

Return address(F)

Parameters(F)

Local variables(F)

Return address(F)

Parameters(G)

Local variables(G)

Return address(G)

During execution of G After callAt point of call

sp

sp

sp

http://ecomputernotes.com

Page 4: Computer notes   data structures - 9

Queues

A stack is LIFO (Last-In First Out) structure.

In contrast, a queue is a FIFO (First-In First-Out ) structure.

A queue is a linear structure for which items can be only inserted at one end and removed at another end.

http://ecomputernotes.com

Page 5: Computer notes   data structures - 9

Queue Operations

Enqueue(X) – place X at the rear of the queue.

Dequeue() -- remove the front element and return it.

Front() -- return front element without removing it.

IsEmpty() -- return TRUE if queue is empty, FALSE otherwise

http://ecomputernotes.com

Page 6: Computer notes   data structures - 9

Implementing Queue

Using linked List: Recall Insert works in constant time for either end

of a linked list. Remove works in constant time only. Seems best that head of the linked list be

the front of the queue so that all removes will be from the front.

Inserts will be at the end of the list.

http://ecomputernotes.com

Page 7: Computer notes   data structures - 9

Implementing Queue

Using linked List:

front

2571 1 7 5 2

frontrear rear

http://ecomputernotes.com

Page 8: Computer notes   data structures - 9

Implementing Queue

Using linked List:

front

2571 1 7 5 2

frontrear rear

front

257 1 7 5 2

frontrear rear

dequeue()

http://ecomputernotes.com

Page 9: Computer notes   data structures - 9

Implementing Queue

Using linked List:

front

2571 1 7 5 2

frontrear rear

front

257 97 5 2

frontrear rear

enqueue(9)

9

http://ecomputernotes.com

Page 10: Computer notes   data structures - 9

Implementing Queueint dequeue(){ int x = front->get(); Node* p = front; front = front->getNext(); delete p; return x;}void enqueue(int x){ Node* newNode = new Node(); newNode->set(x); newNode->setNext(NULL); rear->setNext(newNode);

rear = newNode;}

http://ecomputernotes.com

Page 11: Computer notes   data structures - 9

Implementing Queue

int front(){ return front->get();}

int isEmpty(){

return ( front == NULL );}

http://ecomputernotes.com

Page 12: Computer notes   data structures - 9

Queue using Array

If we use an array to hold queue elements, both insertions and removal at the front (start) of the array are expensive.

This is because we may have to shift up to “n” elements.

For the stack, we needed only one end; for queue we need both.

To get around this, we will not shift upon removal of an element.

http://ecomputernotes.com

Page 13: Computer notes   data structures - 9

Queue using Array

front

2571

rear

65 7

0

0 1 32 4

front

1 7 5 2

3

rear

http://ecomputernotes.com

Page 14: Computer notes   data structures - 9

Queue using Array

front

2571

rear

65 7

0

0 1 32 4

front

1 7 5 2

4

rear

enqueue(6)

66

http://ecomputernotes.com

Page 15: Computer notes   data structures - 9

Queue using Array

front

2571

rear

65 7

0

0 1 32 4

front

1 7 5 2

5

rear

enqueue(8)

66

88

http://ecomputernotes.com

Page 16: Computer notes   data structures - 9

Queue using Array

front

257

rear

65 7

1

0 1 32 4

front

7 5 2

5

rear

dequeue()

66

88

http://ecomputernotes.com

Page 17: Computer notes   data structures - 9

Queue using Array

front

25

rear

65 7

2

0 1 32 4

front

5 2

5

rear

dequeue()

66

88

http://ecomputernotes.com

Page 18: Computer notes   data structures - 9

Queue using Array

front

25

rear

65 7

2

0 1 32 4

front

5 2

7

rear

enqueue(9)enqueue(12)

66

88

99

1212

enqueue(21) ??

http://ecomputernotes.com

Page 19: Computer notes   data structures - 9

Queue using Array

We have inserts and removal running in constant time but we created a new problem.

Cannot insert new elements even though there are two places available at the start of the array.

Solution: allow the queue to “wrap around”.

http://ecomputernotes.com

Page 20: Computer notes   data structures - 9

Queue using Array

Basic idea is to picture the array as a circular array.

front

25

rear2

front

7

rear

6 8 9 126

5

7

0 1

3

2

4

5

268

9

12

http://ecomputernotes.com

Page 21: Computer notes   data structures - 9

Queue using Array

void enqueue(int x){ rear = (rear+1)%size; array[rear] = x;

noElements = noElements+1;}

front

25

rear2

front

0

rear

6 8 9 126

5

7

0 1

3

2

4

5

268

9

12

enqueue(21)

21

218

size

7

noElements

http://ecomputernotes.com

Page 22: Computer notes   data structures - 9

Queue using Array

int isFull(){ return noElements == size;}

int isEmpty(){

return noElements == 0;}

front

25

rear2

front

1

rear

6 8 9 126

5

7

0 1

3

2

4

5

268

9

12

enqueue(7)

21

218

size

8

noElements

7

7

http://ecomputernotes.com

Page 23: Computer notes   data structures - 9

Queue using Array

int dequeue(){ int x = array[front];

front = (front+1)%size; noElements = noElements-1; return x;

}

front rear4

front

1

rear

6 8 9 126

5

7

0 1

3

2

4

689

12

dequeue()

21

218

size

6

noElements

7

7

http://ecomputernotes.com

Page 24: Computer notes   data structures - 9

Use of Queues

Out of the numerous uses of the queues, one of the most useful is simulation.

A simulation program attempts to model a real-world phenomenon.

Many popular video games are simulations, e.g., SimCity, FlightSimulator

Each object and action in the simulation has a counterpart in real world.

http://ecomputernotes.com

Page 25: Computer notes   data structures - 9

Uses of Queues

If the simulation is accurate, the result of the program should mirror the results of the real-world event.

Thus it is possible to understand what occurs in the real-world without actually observing its occurrence.

Let us look at an example. Suppose there is a bank with four tellers.

http://ecomputernotes.com

Page 26: Computer notes   data structures - 9

Simulation of a Bank

A customer enters the bank at a specific time (t1) desiring to conduct a transaction.

Any one of the four tellers can attend to the customer.

The transaction (withdraw, deposit) will take a certain period of time (t2).

If a teller is free, the teller can process the customer’s transaction immediately and the customer leaves the bank at t1+t2.

http://ecomputernotes.com