Computer Notes - Data Structures - 5
-
Upload
ecomputernotes -
Category
Documents
-
view
220 -
download
0
Transcript of Computer Notes - Data Structures - 5
-
8/3/2019 Computer Notes - Data Structures - 5
1/24
Class No.05
Data Structures
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
2/24
Josephus Problem
#include "CList.cpp"void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i 1 ) {
for(i=1; i
-
8/3/2019 Computer Notes - Data Structures - 5
3/24
Josephus Problem
Using a circularly-linked list made the solutiontrivial.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
4/24
Josephus Problem
Using a circularly-linked list made the solutiontrivial.
The solution would have been more difficult ifan array had been used.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
5/24
Josephus Problem
Using a circularly-linked list made the solutiontrivial.
The solution would have been more difficult ifan array had been used.
This illustrates the fact that the choice of theappropriate data structures can significantlysimplify an algorithm. It can make the algorithmmuch faster and efficient.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
6/24
Josephus Problem
Using a circularly-linked list made the solutiontrivial.
The solution would have been more difficult ifan array had been used.
This illustrates the fact that the choice of theappropriate data structures can significantlysimplify an algorithm. It can make the algorithmmuch faster and efficient.
Later we will see how some elegant datastructures lie at the heart of major algorithms.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
7/24
Josephus Problem
Using a circularly-linked list made the solutiontrivial.
The solution would have been more difficult ifan array had been used.
This illustrates the fact that the choice of theappropriate data structures can significantlysimplify an algorithm. It can make the algorithmmuch faster and efficient.
Later we will see how some elegant datastructures lie at the heart of major algorithms. An entire CS course Design and Analysis of
Algorithms is devoted to this topic.http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
8/24
-
8/3/2019 Computer Notes - Data Structures - 5
9/24
Abstract Data Type
We have looked at four differentimplementations of the List data structures: Using arrays
Singly linked list Doubly linked list
Circularly linked list.
The interface to the List stayed the same, i.e.,
add(), get(), next(), start(), remove() etc.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
10/24
Abstract Data Type
We have looked at four differentimplementations of the List data structures: Using arrays
Singly linked list Doubly linked list
Circularly linked list.
The interface to the List stayed the same, i.e.,
add(), get(), next(), start(), remove() etc. The list is thus an abstract data type; we use it
without being concerned with how it isimplemented.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
11/24
Abstract Data Type
What we care about is the methods that areavailable for use with the List ADT.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
12/24
Abstract Data Type
What we care about is the methods that areavailable for use with the List ADT.
We will follow this theme when we develop
other ADT.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
13/24
Abstract Data Type
What we care about is the methods that areavailable for use with the List ADT.
We will follow this theme when we develop
other ADT. We will publish the interface and keep the
freedom to change the implementation of ADTwithout effecting users of the ADT.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
14/24
Abstract Data Type
What we care about is the methods that areavailable for use with the List ADT.
We will follow this theme when we develop
other ADT. We will publish the interface and keep the
freedom to change the implementation of ADTwithout effecting users of the ADT.
The C++ classes provide us the ability to createsuch ADTs.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
15/24
Stacks
Stacks in real life: stack of books, stack ofplates
Add new items at the top
Remove an item at the top
Stack data structure similar to real life:
collection of elements arranged in a linearorder.
Can only access element at the top
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
16/24
Stack Operations
Push(X) insert X as the top element ofthe stack
Pop() remove the top element of thestack and return it.
Top() return the top element withoutremoving it from the stack.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
17/24
Stack Operations
push(2)
top 2
push(5)
top
2
5
push(7)
top
2
5
7
push(1)
top
2
5
7
1
1 pop()
top
2
57
push(21)
top
2
57
21
21 pop()
top
2
57
7 pop()
2
5top
5 pop()
2top
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
18/24
Stack Operation
The last element to go into the stack is thefirst to come out: LIFO Last In First Out.
What happens if we call pop() and there is
no element? Have IsEmpty() boolean function that
returns true if stack is empty, false
otherwise. Throw StackEmpty exception: advanced
C++ concept.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
19/24
Stack Implementation: Array
Worst case for insertion and deletion froman array when insert and delete from thebeginning: shift elements to the left.
Best case for insert and delete is at theend of the array no need to shift anyelements.
Implement push() and pop() by insertingand deleting at the end of an array.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
20/24
Stack using an Array
top
2
5
7
12 5 7 1
0 1 32 4
top = 3
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
21/24
Stack using an Array
In case of an array, it is possible that thearray may fill-up if we push enoughelements.
Have a boolean function IsFull() whichreturns true is stack (array) is full, falseotherwise.
We would call this function before callingpush(x).
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
22/24
Stack Operations with Array
int pop()
{
return A[current--];
}
void push(int x)
{A[++current] = x;
}
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/ -
8/3/2019 Computer Notes - Data Structures - 5
23/24
-
8/3/2019 Computer Notes - Data Structures - 5
24/24
Stack Using Linked List
We can avoid the size limitation of a stackimplemented with an array by using alinked list to hold the stack elements.
As with array, however, we need to decidewhere to insert elements in the list andwhere to delete them so that push and pop
will run the fastest.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/