SlideShare une entreprise Scribd logo
1  sur  151
1
Data Structures
2
The logical or mathematical model of a particular
organization of data is called a data structure
DATA STRUCTURES
3
A primitive data type holds a single piece of data
–e.g. in Java: int, long, char, boolean etc.
–Legal operations on integers: + - * / ...
A data structure structures data!
–Usually more than one piece of data
–Should provide legal operations on the data
–The data might be joined together (e.g. in an array): a
collection
DATA STRUCTURES
4
Static vs. Dynamic StructuresStatic vs. Dynamic Structures
A static data structure has a fixed size
This meaning is different than those associated with the static
modifier
Arrays are static; once you define the number of elements it can
hold, it doesn’t change
A dynamic data structure grows and shrinks as required by the
information it contains
5
An Abstract Data Type (ADT) is a data type together
with the operations, whose properties are specified
independently of any particular implementation.
Abstract Data Type
6
Abstract Data Type
In computing, we view data from three perspectives:
Application level
View of the data within a particular problem
Logical level
An abstract view of the data values (the domain) and the
set of operations to manipulate them
Implementation level
A specific representation of the structure to hold the data
items and the coding of the operations in a programming
language
7
Problem Solving: Main Steps
1. Problem definition
2. Algorithm design / Algorithm specification
3. Algorithm analysis
4. Implementation
5. Testing
6. [Maintenance]
8
Problem Definition
What is the task to be accomplished?
Calculate the average of the grades for a given student
What are the time / space / speed / performance requirements?
9
. Algorithm Design / Specifications
Algorithm: Finite set of instructions that, if followed, accomplishes a
particular task.
Describe: in natural language / pseudo-code / diagrams / etc.
Criteria to follow:
Input: Zero or more quantities (externally produced)
Output: One or more quantities
Definiteness: Clarity, precision of each instruction
Finiteness: The algorithm has to stop after a finite (may be very
large) number of steps
Effectiveness: Each instruction has to be basic enough and
feasible
10
Implementation, Testing, Maintenances
Implementation
Decide on the programming language to use
C, C++, Lisp, Java, Perl, Prolog, assembly, etc. , etc.
Write clean, well documented code
Test, test, test
Integrate feedback from users, fix bugs, ensure compatibility
across different versions  Maintenance
11
Algorithm Analysis
Space complexity
How much space is required
Time complexity
How much time does it take to run the algorithm
Often, we deal with estimates!
12
Space Complexity
Space complexity = The amount of memory required by an
algorithm to run to completion
[Core dumps = the most often encountered cause is “memory
leaks” – the amount of memory required larger than the
memory available on a given system]
Some algorithms may be more efficient if data completely loaded
into memory
Need to look also at system limitations
E.g. Classify 2GB of text in various categories [politics, tourism,
sport, natural disasters, etc.] – can I afford to load the entire
collection?
13
Space Complexity (cont’d)
1. Fixed part: The size required to store certain data/variables, that
is independent of the size of the problem:
- e.g. name of the data collection
- same size for classifying 2GB or 1MB of texts
2. Variable part: Space needed by variables, whose size is
dependent on the size of the problem:
- e.g. actual text
- load 2GB of text VS. load 1MB of text
14
Space Complexity (cont’d)
S(P) = c + S(instance characteristics)
c = constant
Example:
float sum (float* a, int n)
{
float s = 0;
for(int i = 0; i<n; i++) {
s+ = a[i];
}
return s;
}
Space? one word for n, one for a [passed by reference!], one
for i  constant space!
15
Time Complexity
Often more important than space complexity
space available (for computer programs!) tends to be larger
and larger
time is still a problem for all of us
3-4GHz processors on the market
researchers estimate that the computation of various
transformations for 1 single DNA chain for one single protein
on 1 TerraHZ computer would take about 1 year to run to
completion
Algorithms running time is an important issue
16
Running Time
Problem: prefix averages
Given an array X
Compute the array A such that A[i] is the average of elements
X[0] … X[i], for i=0..n-1
Sol 1
At each step i, compute the element X[i] by traversing the array
A and determining the sum of its elements, respectively the
average
Sol 2
At each step i update a sum of the elements in the array A
Compute the element X[i] as sum/I
17
Running time
Input
1 ms
2 ms
3 ms
4 ms
5 ms
A B C D E F G
worst-case
best-case
}average-case?
Suppose the program includes an if-then statement that
may execute or not:  variable running time
Typically algorithms are measured by their worst case
18
Experimental Approach
Write a program that implements the algorithm
Run the program with data sets of varying size.
Determine the actual running time using a system call to measure
time (e.g. system (date) );
Problems?
19
Experimental Approach
It is necessary to implement and test the algorithm in order to
determine its running time.
Experiments can be done only on a limited set of inputs, and may
not be indicative of the running time for other inputs.
The same hardware and software should be used in order to
compare two algorithms. – condition very hard to achieve!
20
Use a Theoretical Approach
Based on high-level description of the algorithms, rather than
language dependent implementations
Makes possible an evaluation of the algorithms that is
independent of the hardware and software environments
21
Algorithm Description
How to describe algorithms independent of a programming
language
Pseudo-Code = a description of an algorithm that is
more structured than usual prose but
less formal than a programming language
(Or diagrams)
Example: find the maximum element of an array.
Algorithm arrayMax(A, n):
Input: An array A storing n integers.
Output: The maximum element in A.
currentMax ← A[0]
for i← 1 to n -1 do
if currentMax < A[i] then currentMax ← A[i]
return currentMax
22
Properties of Big-Oh
Expressions: use standard mathematical symbols
use ← for assignment ( ? in C/C++)
use = for the equality relationship (? in C/C++)
Method Declarations: -Algorithm name(param1, param2)
Programming Constructs:
decision structures: if ... then ... [else ..]
while-loops while ... do
repeat-loops: repeat ... until ...
for-loop: for ... do
array indexing: A[i]
Methods
calls: object method(args)
returns: return value
Use comments
Instructions have to be basic enough and feasible!
23
Asymptotic analysis - terminology
Special classes of algorithms:
logarithmic: O(log n)
linear: O(n)
quadratic: O(n2
)
polynomial: O(nk
), k ≥ 1
exponential: O(an
), n > 1
Polynomial vs. exponential ?
Logarithmic vs. polynomial ?
24
Some Numbers
log n n n log n n
2
n
3
2
n
0 1 0 1 1 2
1 2 2 4 8 4
2 4 8 16 64 16
3 8 24 64 512 256
4 16 64 256 4096 65536
5 32 160 1024 32768 4294967296
25
Relatives of Big-Oh
“Relatives” of the Big-Oh
Ω (f(n)): Big Omega – asymptotic lower bound
Θ (f(n)): Big Theta – asymptotic tight bound
Big-Omega – think of it as the inverse of O(n)
g(n) is Ω (f(n)) if f(n) is O(g(n))
Big-Theta – combine both Big-Oh and Big-Omega
f(n) is Θ (g(n)) if f(n) is O(g(n)) and g(n) is Ω (f(n))
Make the difference:
3n+3 is O(n) and is Θ (n)
3n+3 is O(n2
) but is not Θ (n2
)
26
More “relatives”
Little-oh – f(n) is o(g(n)) if for any c>0 there is n0 such that f(n) <
c(g(n)) for n > n0.
Little-omega
Little-theta
2n+3 is o(n2
)
2n + 3 is o(n) ?
27
Example
Remember the algorithm for computing prefix averages
compute an array A starting with an array X
every element A[i] is the average of all elements X[j] with j < i
Remember some pseudo-code … Solution 1
Algorithm prefixAverages1(X):
Input: An n-element array X of numbers.
Output: An n -element array A of numbers such that A[i] is the
average of elements X[0], ... , X[i].
Let A be an array of n numbers.
for i← 0 to n - 1 do
a ← 0
for j ← 0 to i do
a ← a + X[j]
A[i] ← a/(i+ 1)
return array A
28
Example (cont’d)
Algorithm prefixAverages2(X):
Input: An n-element array X of numbers.
Output: An n -element array A of numbers such that A[i] is the
average of elements X[0], ... , X[i].
Let A be an array of n numbers.
s← 0
for i ← 0 to n do
s ← s + X[i]
A[i] ← s/(i+ 1)
return array A
29
Back to the original question
Which solution would you choose?
O(n2
) vs. O(n)
Some math …
properties of logarithms:
logb(xy) = logbx + logby
logb (x/y) = logbx - logby
logbxa = alogbx
logba= logxa/logxb
–properties of exponentials:
a(b+c)
= ab
a c
abc
= (ab
)c
ab
/ac
= a(b-c)
b = a log
a
b
bc
= a c*log
a
b
30
Important Series
Sum of squares:
Sum of exponents:
Geometric series:
Special case when A = 2
20
+ 21
+ 22
+ … + 2N
= 2N+1
- 1
Nlargefor
36
)12)(1( 3
1
2 NNNN
i
N
i
≈
++
=∑=
-1kandNlargefor
|1|
1
1
≠
+
≈
+
=
∑ k
N
i
kN
i
k
1
11
0 −
−
=
+
=
∑ A
A
A
NN
i
i
∑=
+==+++=
N
i
NNiNNS
1
2/)1(21)( 
31
Analyzing recursive algorithms
function foo (param A, param B) {
statement 1;
statement 2;
if (termination condition) {
return;
foo(A’, B’);
}
32
Solving recursive equations by repeated substitution
T(n) = T(n/2) + c substitute for T(n/2)
= T(n/4) + c + c substitute for T(n/4)
= T(n/8) + c + c + c
= T(n/23
) + 3c in more compact form
= …
= T(n/2k
) + kc “inductive leap”
T(n) = T(n/2logn
) + clogn “choose k = logn”
= T(n/n) + clogn
= T(1) + clogn = b + clogn = θ(logn)
33
Solving recursive equations by telescoping
T(n) = T(n/2) + c initial equation
T(n/2) = T(n/4) + c so this holds
T(n/4) = T(n/8) + c and this …
T(n/8) = T(n/16) + c and this …
…
T(4) = T(2) + c eventually …
T(2) = T(1) + c and this …
T(n) = T(1) + clogn sum equations, canceling
the terms appearing
on both sides
T(n) = θ(logn)
34
RECURSION
Suppose P is a procedure containing either a CALL statement to
itself or a CALL statement back to original procedure P .Then P
is called a recursive procedure
Properties:
1. There must be certain criteria called basic criteria, for
which the procedure does not call itself.
2. Each time the procedure does call itself (directly or
indirectly), it must be closer to the base criteria.
35
FACTORIAL WITHOUT RECURSION
FACTORIAL(FACT,N)
This procedure calculates N! and return the vale in the variable FACT
.
1. If N ==0,then :Set FACT:=1, and Return.
2. Set FACT:=1[Initialize FACT for loop]
3. Repeat for K:=1 to N
Set FACT:=K*FACT
[END of loop]
4. Return.
36
FACTORIAL WITH RECURSION
FACTORIAL(FACT,N)
This procedure calculates N! and return the vale in the variable FACT .
1. If N ==0,then :Set FACT:=1, and Return.
2. Call FACTORIAL(FACT,N-1).
3. Set FACT:=N*FACT.
4. Return.
37
FACTORIAL EXAMPLE USING RECURSION
38
FACTORIAL EXAMPLE USING RECURSION
39
FACTORIAL EXAMPLE USING RECURSION
40
FACTORIAL EXAMPLE USING RECURSION
41
FACTORIAL EXAMPLE USING RECURSION
42
FACTORIAL EXAMPLE USING RECURSION
43
FACTORIAL EXAMPLE USING RECURSION
44
FACTORIAL EXAMPLE USING RECURSION
45
FACTORIAL EXAMPLE USING RECURSION
46
FACTORIAL EXAMPLE USING RECURSION
47
FACTORIAL EXAMPLE USING RECURSION
48
Stack
A stack is a list that has addition and deletion of items only from one
end.
It is like a stack of plates:
Plates can be added to the top of the stack.
Plates can be removed from the top of the stack.
This is an example of “Last in, First out”, (LIFO).
Adding an item is called “pushing” onto the stack.
Deleting an item is called “popping” off from the stack.
49
STACK OPERATION (PUSH)
PUSH(STACK,TOP,MAXSTK,ITEM)
This procedure pushes an ITEM onto a stack.
1.[Stack already filled]
If TOP== MAXSTK, then: Print:OVERFLOW, and Return.
2. Set TOP:=TOP+1.[ Increases TOP by 1]
3. Set STACK[TOP]:=ITEM. [Inserting ITEM in new TOP position]
4. Return.
50
STACK OPERATION (POP)
POP(STACK,TOP,ITEM)
This procedure deletes the top element of STACK and assigns it to the
variable ITEM .
1.[Stack has an item to be to removed]
If TOP== 0, then: Print:UNDERFLOW, and Return.
2. Set ITEM:=STACK[top].[ Assigns TOP element to ITEM ]
3. Set TOP:=TOP-1. [Decreases TOP by 1]
4. Return.
51
STACK EXAMPLES
Implementing a stack :
MAXSTK=7.
Data
push 43
push 23
push 53
pop
pop
push 100
52
STACK EXAMPLES
7
6
5
4
2
1
TOP=0
MAXSTK=7
53
STACK EXAMPLES
7
6
5
4
2
1
TOP=1
MAXSTK=7
PUSH(43)
43
54
STACK EXAMPLES
7
6
5
4
2
1
TOP=2
MAXSTK=7
PUSH(23)
43
23
55
STACK EXAMPLES
7
6
5
4
2
1
TOP=3
MAXSTK=7
PUSH(53)
43
23
53
56
STACK EXAMPLES
7
6
5
4
2
1
TOP=2
MAXSTK=7
POP( )
43
23
57
STACK EXAMPLES
7
6
5
4
2
1
TOP=0
MAXSTK=7
POP( )
43
58
STACK EXAMPLES
7
6
5
4
2
1
TOP=0
MAXSTK=7
PUSH(100)
43
100
59
STACK EXAMPLES
1. INFIX to POSTFIX
2. POSTFIX expression solving
3. N-QUEEN’S problem
60
INFIX to POSTFIX
Properties while transforming infix to postfix expression
1. besides operands and operators, arithmetic expression contains
left and right parentheses
2. We assume that the operators in q consist only of
1. Exponent
2. Multiplication
3. Division
4. Addition
5. Subtraction
61
INFIX to POSTFIX
3. We have three levels of precedence
precedence operators
high right parentheses
exponent
multiplication, division
low addition, subtraction
62
INFIX to POSTFIX
POLISH(Q, P)
Suppose Q is an arithmetic expression written in infix notation.
This algorithm finds the equivalent postfix expression P.
1. Push “(“ into STACK and add “)” to the end of Q.
2. Scan Q from left to right and repeat Step 3 to 6 for each
element of Q until the STACK is empty:
3. If an operand is encountered add it to P.
4. If a left parenthesis is encountered, push it onto STACK.
5. If an operator is encountered then:
(a) repeatedly pop from STACK and to P each operator
(on the top of STACK) which has the same precedence as or
higher precedence this operator
(b) Add operator to STACK
63
INFIX to POSTFIX
6. If a right parenthesis is encountered then:
(a) Repeatedly pop from STACK and add to P each
operator( on the top of STACK) until a left parenthesis is
encountered
(b) Remove the left parenthesis .[Do not add the left
parenthesis to P]
7. Exit
64
INFIX to POSTFIX
INFIX Expression: 3 + 2 * 4
POSTFIX Expression:
7
6
5
4
2
1
65
INFIX to POSTFIX
INFIX Expression: + 2 * 4
POSTFIX Expression: 3
7
6
5
4
2
1
66
INFIX to POSTFIX
INFIX Expression: 2 * 4
POSTFIX Expression: 3
7
6
5
4
2
1 +
67
INFIX to POSTFIX
INFIX Expression: * 4
POSTFIX Expression: 3 2
7
6
5
4
2
1 +
68
INFIX to POSTFIX
INFIX Expression: 4
POSTFIX Expression: 3 2
7
6
5
4
2
1 +
*
69
INFIX to POSTFIX
INFIX Expression:
POSTFIX Expression: 3 2 4
7
6
5
4
2
1 +
*
70
INFIX to POSTFIX
INFIX Expression:
POSTFIX Expression: 3 2 4 *
7
6
5
4
2
1 +
71
INFIX to POSTFIX
INFIX Expression:
POSTFIX Expression: 3 2 4 * +
7
6
5
4
2
1
72
POSTFIX EXPRESSION SOLVING
This algorithm finds the VALUE of an arithmetic expression P
written in postfix notation
1. Add a right parenthesis “)” at the end of P
2. Scan P from left to right and repeat step 3 and 4 for each
element of P until the sentinel “)” is encountered.
3. If an operand is encountered, put it on STACK.
4. If an operator is uncounted then:
a. Remove the two elements of Stack, where A is the top
element and B is the next top element
b. Evaluate B operator A
c. Pace the result of (b) back on STACK
73
POSTFIX EXPRESSION SOLVING
5. Set VALUE equal to the top element on STACK
6. Exit
74
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: 3 2 4 * +
Push the numbers until operator comes
7
6
5
4
2
1
75
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: 2 4 * +
7
6
5
4
2
1 3
76
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: 4 * +
7
6
5
4
2
1 3
2
77
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: * +
Here we pop two time and perform
multiplication on elements (4*2) and
push the Result in to the stack
7
6
5
4
2
1 3
4
2
78
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: +
7
6
5
4
2
1 3
8
79
POSTFIX EXPRESSION SOLVING
POSTFIX Expression: 3 2 4 * +
7
6
5
4
2
1 11
80
The N-Queens Problem
Can the queens be placed on the
board so that no two queens are
attacking each other in chess
board
81
The N-Queens Problem
Two queens are not allowed in the same rowTwo queens are not allowed in the same row
82
The N-Queens Problem
Two queens are not allowed in the same row, or in the same column...Two queens are not allowed in the same row, or in the same column...
83
The N-Queens Problem
Two queens are not allowed inTwo queens are not allowed in
the same row, or in the samethe same row, or in the same
column, or along the samecolumn, or along the same
diagonal.diagonal.r along the same
diagonal.
84
The N-Queens Problem
The number of queens,
and the size of the board
can vary.
The number of queens,
and the size of the board
can vary.
N Queens
N columns
85
The 3-Queens Problem
The program uses aThe program uses a
stack to keep track ofstack to keep track of
where each queen iswhere each queen is
placed.placed.
86
The 3-Queens Problem
Each time the program
decides to place a
queen on the board,
the position of the new
queen is stored in a
record which is placed
in the stack.
ROW 1, COL 1
87
The 3-Queens Problem
We also have an integer
variable to keep track of
how many rows have been
filled so far.
ROW 1, COL 1
1
filled
88
The 3-Queens Problem
Each time we try to place
a new queen in the next
row, we start by placing
the queen in the first
column
ROW 1, COL 1
1
filled
ROW 2, COL 1
89
The 3-Queens Problem
if there is a conflict with
another queen, then we
shift the new queen to
the next column.
ROW 1, COL 1
1
filled
ROW 2, COL 2
90
The 3-Queens Problem
ROW 1, COL 1
1
filled
ROW 2, COL 3
When there are noWhen there are no
conflicts, we stop andconflicts, we stop and
add one to the value ofadd one to the value of
filled.filled.
91
The 3-Queens Problem
When there are no
conflicts, we stop and
add one to the value of
filled.
ROW 1, COL 1
2
filled
ROW 2, COL 3
92
The 3-Queens Problem
Let's look at the third row.
The first position we try has
a conflict
ROW 1, COL 1
2
filled
ROW 2, COL 3
ROW 3, COL 1
93
The 3-Queens Problem
so we shift to column 2.
But another conflict
arises
ROW 1, COL 1
2
filled
ROW 2, COL 3
ROW 3, COL 2
94
The 3-Queens Problem
and we shift to the third
column.
Yet another conflict arises
ROW 1, COL 1
2
filled
ROW 2, COL 3
ROW 3, COL 3
95
The 3-Queens Problem
and we shift to column 4.
There's still a conflict in
column 4, so we try to
shift rightward again
ROW 1, COL 1
2
filled
ROW 2, COL 3
ROW 3, COL 4
96
The 3-Queens Problem
but there's
nowhere else to
go.
ROW 1, COL 1
2
filled
ROW 2, COL 3
ROW 3, COL 4
97
The 3-Queens Problem
When we run out of
room in a row:
 pop the stack,
 reduce filled by 1
 and continue
working on the previous
row.
ROW 1, COL 1
1
filled
ROW 2, COL 3
98
The 3-Queens Problem
Now we continue working
on row 2, shifting the
queen to the right.
ROW 1, COL 1
1
filled
ROW 2, COL 4
99
The 3-Queens Problem
This position has no
conflicts, so we can
increase filled by 1, and
move to row 3.
ROW 1, COL 1
2
filled
ROW 2, COL 4
100
The 3-Queens Problem
In row 3, we start again
at the first column.
ROW 1, COL 1
2
filled
ROW 2, COL 4
ROW 3, COL 1
101
The 3-Queens Problem
In row 3, we start again
at the first column.
ROW 1, COL 1
3
filled
ROW 2, COL 4
ROW 3, COL 2
102
QUEUES
A queue is a data structure that maintains a “first-in first-out”
(FIFO) ordering.
In contrast, a stack maintains a “last-in first-out” (LIFO) ordering.
A queue adds new elements at the end. An element can only be
removed at the front.
This is an abstraction of the “first-come first-served” practice.
103
QUEUE OPERATIONS
A queue has two operations:
QINSERT
QDELETE
An enqueue operation adds new elements at the end of the queue
or its tail. This is similar to the stack operation push; only that push
now is done at the end of the array instead of at the front (or top).
A dequeue operation removes an element from the front of the
array or its head.
104
QUEUE INSERTION
QINSERT(rear, item)
1. IF rear == MAX_QUEUE_SIZE_1 then
Print queue_full
Return;
2. INFO [++rear] = item;
105
QUEUE DELETION
QDELETE(front, rear)
1. IF front == rear then
Return queue_empty( );
Return queue [++ front];
106
QUEUE
OFFSET
DATA
0 1 2 3
0
rear
0
OFFSET
DATA
0 1 2 3
A
front
1
rear
1
OFFSET
DATA
0 1 2 3
A B
front
1
rear
2
OFFSET
DATA
0 1 2 3
B
front
2
rear
2
front
Insert A
Insert B
delete
107
CIRCULAR QUEUE
When a new item is inserted at the rear, the to rear moves
upwards.
Similarly, when an item is deleted from the queue the front arrow
moves downwards.
After a few insert and delete operations the rear might reach the
end of the queue and no more items can be inserted although
the items from the front of the queue have been deleted and
there is space in the queue.
108
CIRCULAR QUEUE
To solve this problem, queues implement wrapping around. Such
queues are called Circular Queues.
Both the front and the rear wrap around to the beginning of the
array when they reached the MAX size of the queue.
It is also called as “Ring buffer”.
109
CIRCULAR QUEUE INSERTION
QINSERT (QUEUE, N, FRONT, ITEM)
This procedure insert an element ITEM into a queue.
1. [Queue already filled?]
IF ( FRONT==1 and REAR==N ) or FRONT ==REAR + 1,then:
write: overflow, and Return
2.[Find new value of REAR]
IF FRONT==NULL then [Queue initially empty.]
Set FRONT=1 and REAR=1
ELSE IF REAR ==N then
Set REAR=1
ELSE
set REAR=REAR+1
[End of if structure]
110
CIRCULAR QUEUE INSERTION
3. Set QUEUE[REAR]=ITEM.[This inserts new element]
4. Return.
111
CIRCULAR QUEUE DELETION
QDELETE(QUEE, N, FRONT, REAR, ITEM)
This procedure deletes an element from a queue and assigns it to the
variable ITEM
1.[Queue already empty]
if FRONT=NULL then write UNDERFLOW, and Return
2. Set ITEM=QUEUE[FRONT]
3. [Find new value of FRONT]
If FRONT =REAR then [Queue has only one element to start]
Set FRONT=NULL and REAR=NULL
112
CIRCULAR QUEUE DELETION
Else if FRONT ==N then
Set FRONT=1
Else
Set FRONT=FRONT +1
[End of if statement]
4.Return
113
CIRCULAR QUEUE DELETION
EMPTY QUEUE
[2] [3] [2] [3]
[1] [4] [1] [4]
[0] [5] [0] [5]
front = 0 front = 0
rear = 0 rear = 3
J2
J1
J3
114
CIRCULAR QUEUE DELETION
[2] [3] [2] [3]
[1] [4][1] [4]
[0] [5] [0] [5]
front =0
rear = 5
front =4
rear =3
J2 J3
J1 J4
J5 J6 J5
J7
J8 J9
115
PRIORITY QUEUE
A priority queue is a collection of elements such that each
element has been assigned a priority and such that the order
in which elements are deleted and processed comes from the
following rules
1. An element of a higher priority is processed before any
elements of lower priority
2. Two elements with the same priority are processed according
to the order in which they were added to the queue
116
ARRAY REPRESENTATION PRIORITY QUEUE
Use a separate queue for each level of priority
Each such queue will appear in its own circular array and must
have its own pair of pointers FRONT and REAR
In fact, if each queue is allocated the same amount of space in
two-dimensional array QUEUE can be used instead of linear
array
117
DELETION ON PRIORITY QUEUE
Deletion
This algorithm deletes and processes the first element in a
priority queue maintained by a two-dimensional array QUEUE
1.[Find the first nonempty queue]
Find the smallest k that FRONT!=NULL
2.Delete and process the front element in row K of QUEUE
118
INSERTION ON PRIORITY QUEUE
Insertion
This algorithm adds an ITEM with priority number M to a priority
queue maintained by a two-dimensional array QUEUE
1. Insert ITEM as the rear element in row M of QUEUE
2. Exit
119
LINKED LIST
Linked list
Linear collection of self-referential class objects, called
nodes
Connected by pointer links
Accessed via a pointer to the first node of the list
Subsequent nodes are accessed via the link-pointer member
of the current node
Link pointer in the last node is set to null to mark the list’s
end
Use a linked list instead of an array when
You have an unpredictable number of data elements
Your list needs to be sorted quickly
120
TYPES OF LINKED LIST
Types of linked lists:
Singly linked list
Begins with a pointer to the first node
Terminates with a null pointer
Only traversed in one direction
Circular, singly linked
Pointer in the last node points back to the first node
Doubly linked list
Two “start pointers” – first element and last element
Each node has a forward pointer and a backward pointer
Allows traversals both forwards and backwards
Circular, doubly linked list
Forward pointer of the last node points to the first node
and backward pointer of the first node points to the last
node
121
linked list
Start Node
A placeholder node at the beginning of the list, used to simplify
list processing. It doesn’t hold any data
Tail Node
A placeholder node at the end of the list, used to simplify list
processing
122
Singly linked list
Single Linked List
Consists of data elements and reference to the
next Node in the linked list
First node is accessed by reference
Last node is set to NULL
A B C
Start Tail
123
SINGLE LINKED LIST INSERTION
INSFIRST(INFO, LINK, START, AVAIL, ITEM)
This algorithm inserts ITEM as the first node in the list
1. [OVERFLOW?] If AVAIL=NULL then :Write OVERFLOW
and Exit
2. [Remove first node from AVIL list]
Set NEW =AVAIL and AVAIL=LINK[AVAIL]
3. Set INFO[NEW]=ITEM [Copies new data into new node]
4. Set LINK[NEW]=START [new node now points to original
first node]
5. Set START=NEW [Changes START so it points to the
node]
6. Exit
124
SINGLE LINKED LIST INSERTION
s Xcda
current
1
start
125
SINGLE LINKED LIST INSERTION
s Xcda
current
1
start
126
SINGLE LINKED LIST INSERTION
s Xcda
current
1
start
127
SINGLE LINKED LIST INSERTION
s Xcda
current
1
start
128
SINGLE LINKED LIST INSERTION
s Xcda
current
1
start
129
SINGLE LINKED LIST INSERTION
INSLOC(INFO, LINK,START, AVAIL, LOC, ITEM)
This algorithm inserts ITEM so that ITEM follows the node with
location LOC or inserts ITEM as the first node when LOC=NULL
1. [OVERFLOW ?] If AVAIL==NULL then write OVERFLOW and
EXIT
2. [Remove first node from AVAIL list]
3. Set INFO[NEW]=ITEM[copies new data into new node]
4. If LOC==NULL then :[insert as first node]
Set LINK[NEW]=Start and START=NEW
else [insert after node with location LOC]
Set LINK[NEW]=LINK[LOC] and LINK[LOC]=NEW
end of if structure
5. exit
130
SINGLE LINKED LIST INSERTION
9
6 X532start
temp
current
131
SINGLE LINKED LIST INSERTION
9
6 X532start
temp
current
132
SINGLE LINKED LIST INSERTION
9
6 X532start
temp
current
133
SINGLE LINKED LIST INSERTION
9
6 X532start
temp
current
134
SINGLE LINKED LIST DELETION
DELETE(INFO, LINK,START, AVAIL, ITEM)
This algorithm deletes from a linked list the first node N which
contains the given ITEM of information
1. [Use procedure FIND given after this algorithm]
FIND(INFO, LINK, START, ITEM, LOC, LOCP)
2. If LOC==NULL then:
Write ITEM not in list and exit
3. If LOCP==NUL then
Set START=LINK[START]
else :
Set LINK[LOCP]=LINK[LOC]
3. {Return deleted node to the AVAIL list]
Set LINK[LOC]=AVAIL and AVAIL=LOC
4. Exit
135
SINGLE LINKED LIST DELETION
FINDB(INFO, START, ITEM, LOC, LOCP)
This procedure finds the location LOC of first node N which
contains ITEM and the location LOVP of the node preceding N. if
ITEM does not appear in the list then the procedure sets
LOC=NULL and if ITEM appears in the first node then it sets
LOCP=NULL
1. [list empty?] if START==NULL then
Set LOC =NULL and LOCP==NULL and return
2. [ITEM in first node ] if INFO[START]==ITEM then
Set LOC=START and LOCP=NULL and return
3. Set SAVE=START and PRT=LINK[START]
4. Repeat steps 5 and 6 while PTR!=NULL
5. If INFO[PTR]==ITEM then
Set LOC=PTR and LOCP=NULL
136
SINGLE LINKED LIST DELETION
6. Set SAVE=PTR and PTR=LINK[PTR]
7. Set LOC=NULL
8. Return
137
SINGLE LINKED LIST DELETION
6 X532start
LOCP
LOC
138
SINGLE LINKED LIST DELETION
6 X532start
LOCP
LOC
139
SINGLE LINKED LIST DELETION
6 X532start
LOCP
LOC
140
Double Linked Lists
Consists of nodes with two linked references one points to the
previous and other to the next node
Maximises the needs of list traversals
Compared to single list inserting and deleting nodes is a bit
slower as both the links had to be updated
It requires the extra storage space for the second list
A B C
start
Tail
141
Insertion Double Linked Lists
INSERTWL(INFO,FORW, BACK, STACK,AVAIL,LOCA,LOCB, ITEM)
1. [OVERFLOW?] If AVAIL==NULL then write OVER FLOW and exit
2. [Remove node from AVAIL list and copy new data into node]
Set NEW=AVIAL, AVIAL=FORW[AVAIL] INFO[NEW]=ITEM
3. [Insert node into list]
Set FORW[LOCA]=NEW, FORW[NEW]=LOCB
BACK[LOCB]=NEW BACK[NEW]=LOCA
4. Exit
142
Insertion Double Linked Lists
3 4 7
start
Tail
Node A Node B
LOC A LOC B
7NEW
143
Insertion Double Linked Lists
3 4 7
start
Tail
Node A Node B
LOC A LOC B
7NEW
144
Insertion Double Linked Lists
3 4 7
start
Tail
Node A Node B
LOC A LOC B
7NEW
145
Insertion Double Linked Lists
3 4 7
start
Tail
Node A Node B
LOC A LOC B
7NEW
146
Insertion Double Linked Lists
3 4 7
start
Tail
Node A Node B
LOC A LOC B
7NEW
147
Deletion Double Linked Lists
DELTWL(INFO, FORW, BACK, START, AVAIL, LOC)
1. [Delete node]
Set FORE[BACK[LOC]]=FORW[LOC]
Set BACK[FORW[LOC]]=BACK[LOC]
2. [Return node to AVAIL list]
Set FORW[LOC]=AVAIL and AVAIL=LOC
3. Exit
148
Deletion Double Linked Lists
A B C
start
Tail
LOC
149
Deletion Double Linked Lists
A B C
start
Tail
LOC
150
Deletion Double Linked Lists
A B C
start
Tail
151
Deletion Double Linked Lists
A B C
start
Tail

Contenu connexe

Tendances (16)

Introduction to datastructure and algorithm
Introduction to datastructure and algorithmIntroduction to datastructure and algorithm
Introduction to datastructure and algorithm
 
Lec3
Lec3Lec3
Lec3
 
Introducing: A Complete Algebra of Data
Introducing: A Complete Algebra of DataIntroducing: A Complete Algebra of Data
Introducing: A Complete Algebra of Data
 
Lec2
Lec2Lec2
Lec2
 
Chapter 4 ds
Chapter 4 dsChapter 4 ds
Chapter 4 ds
 
Big oh Representation Used in Time complexities
Big oh Representation Used in Time complexitiesBig oh Representation Used in Time complexities
Big oh Representation Used in Time complexities
 
Algorithmic Notations
Algorithmic NotationsAlgorithmic Notations
Algorithmic Notations
 
Search algorithms master
Search algorithms masterSearch algorithms master
Search algorithms master
 
Data Structure and Algorithms
Data Structure and AlgorithmsData Structure and Algorithms
Data Structure and Algorithms
 
Asymptotic Analysis
Asymptotic AnalysisAsymptotic Analysis
Asymptotic Analysis
 
Analysis of algorithms
Analysis of algorithmsAnalysis of algorithms
Analysis of algorithms
 
Data Structures- Hashing
Data Structures- Hashing Data Structures- Hashing
Data Structures- Hashing
 
Lec5
Lec5Lec5
Lec5
 
Lec5
Lec5Lec5
Lec5
 
Advanced data structures slide 1 2
Advanced data structures slide 1 2Advanced data structures slide 1 2
Advanced data structures slide 1 2
 
Lec2
Lec2Lec2
Lec2
 

En vedette

Stacks,queues,linked-list
Stacks,queues,linked-listStacks,queues,linked-list
Stacks,queues,linked-listpinakspatel
 
Ds lab manual by s.k.rath
Ds lab manual by s.k.rathDs lab manual by s.k.rath
Ds lab manual by s.k.rathSANTOSH RATH
 
Ppt on Linked list,stack,queue
Ppt on Linked list,stack,queuePpt on Linked list,stack,queue
Ppt on Linked list,stack,queueSrajan Shukla
 
Data Structure -List Stack Queue
Data Structure -List Stack QueueData Structure -List Stack Queue
Data Structure -List Stack Queuesurya pandian
 
Stacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti AroraStacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti Arorakulachihansraj
 
Ppt presentation of queues
Ppt presentation of queuesPpt presentation of queues
Ppt presentation of queuesBuxoo Abdullah
 
Stack data structure
Stack data structureStack data structure
Stack data structureTech_MX
 
Queue Data Structure
Queue Data StructureQueue Data Structure
Queue Data StructureZidny Nafan
 
Queue data structure
Queue data structureQueue data structure
Queue data structureanooppjoseph
 
STACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURESTACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTUREArchie Jamwal
 

En vedette (14)

Stacks,queues,linked-list
Stacks,queues,linked-listStacks,queues,linked-list
Stacks,queues,linked-list
 
Ds lab manual by s.k.rath
Ds lab manual by s.k.rathDs lab manual by s.k.rath
Ds lab manual by s.k.rath
 
Ppt on Linked list,stack,queue
Ppt on Linked list,stack,queuePpt on Linked list,stack,queue
Ppt on Linked list,stack,queue
 
Queue
QueueQueue
Queue
 
Stack
StackStack
Stack
 
Stack a Data Structure
Stack a Data StructureStack a Data Structure
Stack a Data Structure
 
Data Structure -List Stack Queue
Data Structure -List Stack QueueData Structure -List Stack Queue
Data Structure -List Stack Queue
 
Stacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti AroraStacks & Queues By Ms. Niti Arora
Stacks & Queues By Ms. Niti Arora
 
Queue
QueueQueue
Queue
 
Ppt presentation of queues
Ppt presentation of queuesPpt presentation of queues
Ppt presentation of queues
 
Stack data structure
Stack data structureStack data structure
Stack data structure
 
Queue Data Structure
Queue Data StructureQueue Data Structure
Queue Data Structure
 
Queue data structure
Queue data structureQueue data structure
Queue data structure
 
STACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURESTACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURE
 

Similaire à Stacks queues lists

DAA-Unit1.pptx
DAA-Unit1.pptxDAA-Unit1.pptx
DAA-Unit1.pptxNishaS88
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to AlgorithmsVenkatesh Iyer
 
Data Structures and Algorithm Analysis
Data Structures  and  Algorithm AnalysisData Structures  and  Algorithm Analysis
Data Structures and Algorithm AnalysisMary Margarat
 
Introduction to data structures and complexity.pptx
Introduction to data structures and complexity.pptxIntroduction to data structures and complexity.pptx
Introduction to data structures and complexity.pptxPJS KUMAR
 
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...TechVision8
 
VCE Unit 01 (2).pptx
VCE Unit 01 (2).pptxVCE Unit 01 (2).pptx
VCE Unit 01 (2).pptxskilljiolms
 
19. Java data structures algorithms and complexity
19. Java data structures algorithms and complexity19. Java data structures algorithms and complexity
19. Java data structures algorithms and complexityIntro C# Book
 
19. Data Structures and Algorithm Complexity
19. Data Structures and Algorithm Complexity19. Data Structures and Algorithm Complexity
19. Data Structures and Algorithm ComplexityIntro C# Book
 
Data Structures- Part2 analysis tools
Data Structures- Part2 analysis toolsData Structures- Part2 analysis tools
Data Structures- Part2 analysis toolsAbdullah Al-hazmy
 
Data structures notes for college students btech.pptx
Data structures notes for college students btech.pptxData structures notes for college students btech.pptx
Data structures notes for college students btech.pptxKarthikVijay59
 
19. algorithms and-complexity
19. algorithms and-complexity19. algorithms and-complexity
19. algorithms and-complexityshowkat27
 
Aad introduction
Aad introductionAad introduction
Aad introductionMr SMAK
 

Similaire à Stacks queues lists (20)

DAA-Unit1.pptx
DAA-Unit1.pptxDAA-Unit1.pptx
DAA-Unit1.pptx
 
AlgorithmAnalysis2.ppt
AlgorithmAnalysis2.pptAlgorithmAnalysis2.ppt
AlgorithmAnalysis2.ppt
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
Analysis.ppt
Analysis.pptAnalysis.ppt
Analysis.ppt
 
3 analysis.gtm
3 analysis.gtm3 analysis.gtm
3 analysis.gtm
 
Data Structures and Algorithm Analysis
Data Structures  and  Algorithm AnalysisData Structures  and  Algorithm Analysis
Data Structures and Algorithm Analysis
 
Introduction to data structures and complexity.pptx
Introduction to data structures and complexity.pptxIntroduction to data structures and complexity.pptx
Introduction to data structures and complexity.pptx
 
Big o
Big oBig o
Big o
 
Lec1
Lec1Lec1
Lec1
 
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...
Data Structures and Algorithms Lecture 2: Analysis of Algorithms, Asymptotic ...
 
VCE Unit 01 (2).pptx
VCE Unit 01 (2).pptxVCE Unit 01 (2).pptx
VCE Unit 01 (2).pptx
 
19. Java data structures algorithms and complexity
19. Java data structures algorithms and complexity19. Java data structures algorithms and complexity
19. Java data structures algorithms and complexity
 
19. Data Structures and Algorithm Complexity
19. Data Structures and Algorithm Complexity19. Data Structures and Algorithm Complexity
19. Data Structures and Algorithm Complexity
 
Data Structures- Part2 analysis tools
Data Structures- Part2 analysis toolsData Structures- Part2 analysis tools
Data Structures- Part2 analysis tools
 
Q
QQ
Q
 
Data structures notes for college students btech.pptx
Data structures notes for college students btech.pptxData structures notes for college students btech.pptx
Data structures notes for college students btech.pptx
 
19. algorithms and-complexity
19. algorithms and-complexity19. algorithms and-complexity
19. algorithms and-complexity
 
Unit ii algorithm
Unit   ii algorithmUnit   ii algorithm
Unit ii algorithm
 
Aad introduction
Aad introductionAad introduction
Aad introduction
 
An Intoduction to R
An Intoduction to RAn Intoduction to R
An Intoduction to R
 

Plus de Luis Goldster

Ruby on rails evaluation
Ruby on rails evaluationRuby on rails evaluation
Ruby on rails evaluationLuis Goldster
 
Ado.net &amp; data persistence frameworks
Ado.net &amp; data persistence frameworksAdo.net &amp; data persistence frameworks
Ado.net &amp; data persistence frameworksLuis Goldster
 
Multithreading models.ppt
Multithreading models.pptMultithreading models.ppt
Multithreading models.pptLuis Goldster
 
Business analytics and data mining
Business analytics and data miningBusiness analytics and data mining
Business analytics and data miningLuis Goldster
 
Big picture of data mining
Big picture of data miningBig picture of data mining
Big picture of data miningLuis Goldster
 
Data mining and knowledge discovery
Data mining and knowledge discoveryData mining and knowledge discovery
Data mining and knowledge discoveryLuis Goldster
 
Directory based cache coherence
Directory based cache coherenceDirectory based cache coherence
Directory based cache coherenceLuis Goldster
 
Hardware managed cache
Hardware managed cacheHardware managed cache
Hardware managed cacheLuis Goldster
 
How analysis services caching works
How analysis services caching worksHow analysis services caching works
How analysis services caching worksLuis Goldster
 
Optimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsOptimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsLuis Goldster
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysisLuis Goldster
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with javaLuis Goldster
 

Plus de Luis Goldster (20)

Ruby on rails evaluation
Ruby on rails evaluationRuby on rails evaluation
Ruby on rails evaluation
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Lisp and scheme i
Lisp and scheme iLisp and scheme i
Lisp and scheme i
 
Ado.net &amp; data persistence frameworks
Ado.net &amp; data persistence frameworksAdo.net &amp; data persistence frameworks
Ado.net &amp; data persistence frameworks
 
Multithreading models.ppt
Multithreading models.pptMultithreading models.ppt
Multithreading models.ppt
 
Business analytics and data mining
Business analytics and data miningBusiness analytics and data mining
Business analytics and data mining
 
Big picture of data mining
Big picture of data miningBig picture of data mining
Big picture of data mining
 
Data mining and knowledge discovery
Data mining and knowledge discoveryData mining and knowledge discovery
Data mining and knowledge discovery
 
Cache recap
Cache recapCache recap
Cache recap
 
Directory based cache coherence
Directory based cache coherenceDirectory based cache coherence
Directory based cache coherence
 
Hardware managed cache
Hardware managed cacheHardware managed cache
Hardware managed cache
 
How analysis services caching works
How analysis services caching worksHow analysis services caching works
How analysis services caching works
 
Abstract data types
Abstract data typesAbstract data types
Abstract data types
 
Optimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsOptimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessors
 
Api crash
Api crashApi crash
Api crash
 
Object model
Object modelObject model
Object model
 
Abstraction file
Abstraction fileAbstraction file
Abstraction file
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysis
 
Abstract class
Abstract classAbstract class
Abstract class
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java
 

Dernier

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Dernier (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Stacks queues lists

  • 2. 2 The logical or mathematical model of a particular organization of data is called a data structure DATA STRUCTURES
  • 3. 3 A primitive data type holds a single piece of data –e.g. in Java: int, long, char, boolean etc. –Legal operations on integers: + - * / ... A data structure structures data! –Usually more than one piece of data –Should provide legal operations on the data –The data might be joined together (e.g. in an array): a collection DATA STRUCTURES
  • 4. 4 Static vs. Dynamic StructuresStatic vs. Dynamic Structures A static data structure has a fixed size This meaning is different than those associated with the static modifier Arrays are static; once you define the number of elements it can hold, it doesn’t change A dynamic data structure grows and shrinks as required by the information it contains
  • 5. 5 An Abstract Data Type (ADT) is a data type together with the operations, whose properties are specified independently of any particular implementation. Abstract Data Type
  • 6. 6 Abstract Data Type In computing, we view data from three perspectives: Application level View of the data within a particular problem Logical level An abstract view of the data values (the domain) and the set of operations to manipulate them Implementation level A specific representation of the structure to hold the data items and the coding of the operations in a programming language
  • 7. 7 Problem Solving: Main Steps 1. Problem definition 2. Algorithm design / Algorithm specification 3. Algorithm analysis 4. Implementation 5. Testing 6. [Maintenance]
  • 8. 8 Problem Definition What is the task to be accomplished? Calculate the average of the grades for a given student What are the time / space / speed / performance requirements?
  • 9. 9 . Algorithm Design / Specifications Algorithm: Finite set of instructions that, if followed, accomplishes a particular task. Describe: in natural language / pseudo-code / diagrams / etc. Criteria to follow: Input: Zero or more quantities (externally produced) Output: One or more quantities Definiteness: Clarity, precision of each instruction Finiteness: The algorithm has to stop after a finite (may be very large) number of steps Effectiveness: Each instruction has to be basic enough and feasible
  • 10. 10 Implementation, Testing, Maintenances Implementation Decide on the programming language to use C, C++, Lisp, Java, Perl, Prolog, assembly, etc. , etc. Write clean, well documented code Test, test, test Integrate feedback from users, fix bugs, ensure compatibility across different versions  Maintenance
  • 11. 11 Algorithm Analysis Space complexity How much space is required Time complexity How much time does it take to run the algorithm Often, we deal with estimates!
  • 12. 12 Space Complexity Space complexity = The amount of memory required by an algorithm to run to completion [Core dumps = the most often encountered cause is “memory leaks” – the amount of memory required larger than the memory available on a given system] Some algorithms may be more efficient if data completely loaded into memory Need to look also at system limitations E.g. Classify 2GB of text in various categories [politics, tourism, sport, natural disasters, etc.] – can I afford to load the entire collection?
  • 13. 13 Space Complexity (cont’d) 1. Fixed part: The size required to store certain data/variables, that is independent of the size of the problem: - e.g. name of the data collection - same size for classifying 2GB or 1MB of texts 2. Variable part: Space needed by variables, whose size is dependent on the size of the problem: - e.g. actual text - load 2GB of text VS. load 1MB of text
  • 14. 14 Space Complexity (cont’d) S(P) = c + S(instance characteristics) c = constant Example: float sum (float* a, int n) { float s = 0; for(int i = 0; i<n; i++) { s+ = a[i]; } return s; } Space? one word for n, one for a [passed by reference!], one for i  constant space!
  • 15. 15 Time Complexity Often more important than space complexity space available (for computer programs!) tends to be larger and larger time is still a problem for all of us 3-4GHz processors on the market researchers estimate that the computation of various transformations for 1 single DNA chain for one single protein on 1 TerraHZ computer would take about 1 year to run to completion Algorithms running time is an important issue
  • 16. 16 Running Time Problem: prefix averages Given an array X Compute the array A such that A[i] is the average of elements X[0] … X[i], for i=0..n-1 Sol 1 At each step i, compute the element X[i] by traversing the array A and determining the sum of its elements, respectively the average Sol 2 At each step i update a sum of the elements in the array A Compute the element X[i] as sum/I
  • 17. 17 Running time Input 1 ms 2 ms 3 ms 4 ms 5 ms A B C D E F G worst-case best-case }average-case? Suppose the program includes an if-then statement that may execute or not:  variable running time Typically algorithms are measured by their worst case
  • 18. 18 Experimental Approach Write a program that implements the algorithm Run the program with data sets of varying size. Determine the actual running time using a system call to measure time (e.g. system (date) ); Problems?
  • 19. 19 Experimental Approach It is necessary to implement and test the algorithm in order to determine its running time. Experiments can be done only on a limited set of inputs, and may not be indicative of the running time for other inputs. The same hardware and software should be used in order to compare two algorithms. – condition very hard to achieve!
  • 20. 20 Use a Theoretical Approach Based on high-level description of the algorithms, rather than language dependent implementations Makes possible an evaluation of the algorithms that is independent of the hardware and software environments
  • 21. 21 Algorithm Description How to describe algorithms independent of a programming language Pseudo-Code = a description of an algorithm that is more structured than usual prose but less formal than a programming language (Or diagrams) Example: find the maximum element of an array. Algorithm arrayMax(A, n): Input: An array A storing n integers. Output: The maximum element in A. currentMax ← A[0] for i← 1 to n -1 do if currentMax < A[i] then currentMax ← A[i] return currentMax
  • 22. 22 Properties of Big-Oh Expressions: use standard mathematical symbols use ← for assignment ( ? in C/C++) use = for the equality relationship (? in C/C++) Method Declarations: -Algorithm name(param1, param2) Programming Constructs: decision structures: if ... then ... [else ..] while-loops while ... do repeat-loops: repeat ... until ... for-loop: for ... do array indexing: A[i] Methods calls: object method(args) returns: return value Use comments Instructions have to be basic enough and feasible!
  • 23. 23 Asymptotic analysis - terminology Special classes of algorithms: logarithmic: O(log n) linear: O(n) quadratic: O(n2 ) polynomial: O(nk ), k ≥ 1 exponential: O(an ), n > 1 Polynomial vs. exponential ? Logarithmic vs. polynomial ?
  • 24. 24 Some Numbers log n n n log n n 2 n 3 2 n 0 1 0 1 1 2 1 2 2 4 8 4 2 4 8 16 64 16 3 8 24 64 512 256 4 16 64 256 4096 65536 5 32 160 1024 32768 4294967296
  • 25. 25 Relatives of Big-Oh “Relatives” of the Big-Oh Ω (f(n)): Big Omega – asymptotic lower bound Θ (f(n)): Big Theta – asymptotic tight bound Big-Omega – think of it as the inverse of O(n) g(n) is Ω (f(n)) if f(n) is O(g(n)) Big-Theta – combine both Big-Oh and Big-Omega f(n) is Θ (g(n)) if f(n) is O(g(n)) and g(n) is Ω (f(n)) Make the difference: 3n+3 is O(n) and is Θ (n) 3n+3 is O(n2 ) but is not Θ (n2 )
  • 26. 26 More “relatives” Little-oh – f(n) is o(g(n)) if for any c>0 there is n0 such that f(n) < c(g(n)) for n > n0. Little-omega Little-theta 2n+3 is o(n2 ) 2n + 3 is o(n) ?
  • 27. 27 Example Remember the algorithm for computing prefix averages compute an array A starting with an array X every element A[i] is the average of all elements X[j] with j < i Remember some pseudo-code … Solution 1 Algorithm prefixAverages1(X): Input: An n-element array X of numbers. Output: An n -element array A of numbers such that A[i] is the average of elements X[0], ... , X[i]. Let A be an array of n numbers. for i← 0 to n - 1 do a ← 0 for j ← 0 to i do a ← a + X[j] A[i] ← a/(i+ 1) return array A
  • 28. 28 Example (cont’d) Algorithm prefixAverages2(X): Input: An n-element array X of numbers. Output: An n -element array A of numbers such that A[i] is the average of elements X[0], ... , X[i]. Let A be an array of n numbers. s← 0 for i ← 0 to n do s ← s + X[i] A[i] ← s/(i+ 1) return array A
  • 29. 29 Back to the original question Which solution would you choose? O(n2 ) vs. O(n) Some math … properties of logarithms: logb(xy) = logbx + logby logb (x/y) = logbx - logby logbxa = alogbx logba= logxa/logxb –properties of exponentials: a(b+c) = ab a c abc = (ab )c ab /ac = a(b-c) b = a log a b bc = a c*log a b
  • 30. 30 Important Series Sum of squares: Sum of exponents: Geometric series: Special case when A = 2 20 + 21 + 22 + … + 2N = 2N+1 - 1 Nlargefor 36 )12)(1( 3 1 2 NNNN i N i ≈ ++ =∑= -1kandNlargefor |1| 1 1 ≠ + ≈ + = ∑ k N i kN i k 1 11 0 − − = + = ∑ A A A NN i i ∑= +==+++= N i NNiNNS 1 2/)1(21)( 
  • 31. 31 Analyzing recursive algorithms function foo (param A, param B) { statement 1; statement 2; if (termination condition) { return; foo(A’, B’); }
  • 32. 32 Solving recursive equations by repeated substitution T(n) = T(n/2) + c substitute for T(n/2) = T(n/4) + c + c substitute for T(n/4) = T(n/8) + c + c + c = T(n/23 ) + 3c in more compact form = … = T(n/2k ) + kc “inductive leap” T(n) = T(n/2logn ) + clogn “choose k = logn” = T(n/n) + clogn = T(1) + clogn = b + clogn = θ(logn)
  • 33. 33 Solving recursive equations by telescoping T(n) = T(n/2) + c initial equation T(n/2) = T(n/4) + c so this holds T(n/4) = T(n/8) + c and this … T(n/8) = T(n/16) + c and this … … T(4) = T(2) + c eventually … T(2) = T(1) + c and this … T(n) = T(1) + clogn sum equations, canceling the terms appearing on both sides T(n) = θ(logn)
  • 34. 34 RECURSION Suppose P is a procedure containing either a CALL statement to itself or a CALL statement back to original procedure P .Then P is called a recursive procedure Properties: 1. There must be certain criteria called basic criteria, for which the procedure does not call itself. 2. Each time the procedure does call itself (directly or indirectly), it must be closer to the base criteria.
  • 35. 35 FACTORIAL WITHOUT RECURSION FACTORIAL(FACT,N) This procedure calculates N! and return the vale in the variable FACT . 1. If N ==0,then :Set FACT:=1, and Return. 2. Set FACT:=1[Initialize FACT for loop] 3. Repeat for K:=1 to N Set FACT:=K*FACT [END of loop] 4. Return.
  • 36. 36 FACTORIAL WITH RECURSION FACTORIAL(FACT,N) This procedure calculates N! and return the vale in the variable FACT . 1. If N ==0,then :Set FACT:=1, and Return. 2. Call FACTORIAL(FACT,N-1). 3. Set FACT:=N*FACT. 4. Return.
  • 48. 48 Stack A stack is a list that has addition and deletion of items only from one end. It is like a stack of plates: Plates can be added to the top of the stack. Plates can be removed from the top of the stack. This is an example of “Last in, First out”, (LIFO). Adding an item is called “pushing” onto the stack. Deleting an item is called “popping” off from the stack.
  • 49. 49 STACK OPERATION (PUSH) PUSH(STACK,TOP,MAXSTK,ITEM) This procedure pushes an ITEM onto a stack. 1.[Stack already filled] If TOP== MAXSTK, then: Print:OVERFLOW, and Return. 2. Set TOP:=TOP+1.[ Increases TOP by 1] 3. Set STACK[TOP]:=ITEM. [Inserting ITEM in new TOP position] 4. Return.
  • 50. 50 STACK OPERATION (POP) POP(STACK,TOP,ITEM) This procedure deletes the top element of STACK and assigns it to the variable ITEM . 1.[Stack has an item to be to removed] If TOP== 0, then: Print:UNDERFLOW, and Return. 2. Set ITEM:=STACK[top].[ Assigns TOP element to ITEM ] 3. Set TOP:=TOP-1. [Decreases TOP by 1] 4. Return.
  • 51. 51 STACK EXAMPLES Implementing a stack : MAXSTK=7. Data push 43 push 23 push 53 pop pop push 100
  • 59. 59 STACK EXAMPLES 1. INFIX to POSTFIX 2. POSTFIX expression solving 3. N-QUEEN’S problem
  • 60. 60 INFIX to POSTFIX Properties while transforming infix to postfix expression 1. besides operands and operators, arithmetic expression contains left and right parentheses 2. We assume that the operators in q consist only of 1. Exponent 2. Multiplication 3. Division 4. Addition 5. Subtraction
  • 61. 61 INFIX to POSTFIX 3. We have three levels of precedence precedence operators high right parentheses exponent multiplication, division low addition, subtraction
  • 62. 62 INFIX to POSTFIX POLISH(Q, P) Suppose Q is an arithmetic expression written in infix notation. This algorithm finds the equivalent postfix expression P. 1. Push “(“ into STACK and add “)” to the end of Q. 2. Scan Q from left to right and repeat Step 3 to 6 for each element of Q until the STACK is empty: 3. If an operand is encountered add it to P. 4. If a left parenthesis is encountered, push it onto STACK. 5. If an operator is encountered then: (a) repeatedly pop from STACK and to P each operator (on the top of STACK) which has the same precedence as or higher precedence this operator (b) Add operator to STACK
  • 63. 63 INFIX to POSTFIX 6. If a right parenthesis is encountered then: (a) Repeatedly pop from STACK and add to P each operator( on the top of STACK) until a left parenthesis is encountered (b) Remove the left parenthesis .[Do not add the left parenthesis to P] 7. Exit
  • 64. 64 INFIX to POSTFIX INFIX Expression: 3 + 2 * 4 POSTFIX Expression: 7 6 5 4 2 1
  • 65. 65 INFIX to POSTFIX INFIX Expression: + 2 * 4 POSTFIX Expression: 3 7 6 5 4 2 1
  • 66. 66 INFIX to POSTFIX INFIX Expression: 2 * 4 POSTFIX Expression: 3 7 6 5 4 2 1 +
  • 67. 67 INFIX to POSTFIX INFIX Expression: * 4 POSTFIX Expression: 3 2 7 6 5 4 2 1 +
  • 68. 68 INFIX to POSTFIX INFIX Expression: 4 POSTFIX Expression: 3 2 7 6 5 4 2 1 + *
  • 69. 69 INFIX to POSTFIX INFIX Expression: POSTFIX Expression: 3 2 4 7 6 5 4 2 1 + *
  • 70. 70 INFIX to POSTFIX INFIX Expression: POSTFIX Expression: 3 2 4 * 7 6 5 4 2 1 +
  • 71. 71 INFIX to POSTFIX INFIX Expression: POSTFIX Expression: 3 2 4 * + 7 6 5 4 2 1
  • 72. 72 POSTFIX EXPRESSION SOLVING This algorithm finds the VALUE of an arithmetic expression P written in postfix notation 1. Add a right parenthesis “)” at the end of P 2. Scan P from left to right and repeat step 3 and 4 for each element of P until the sentinel “)” is encountered. 3. If an operand is encountered, put it on STACK. 4. If an operator is uncounted then: a. Remove the two elements of Stack, where A is the top element and B is the next top element b. Evaluate B operator A c. Pace the result of (b) back on STACK
  • 73. 73 POSTFIX EXPRESSION SOLVING 5. Set VALUE equal to the top element on STACK 6. Exit
  • 74. 74 POSTFIX EXPRESSION SOLVING POSTFIX Expression: 3 2 4 * + Push the numbers until operator comes 7 6 5 4 2 1
  • 75. 75 POSTFIX EXPRESSION SOLVING POSTFIX Expression: 2 4 * + 7 6 5 4 2 1 3
  • 76. 76 POSTFIX EXPRESSION SOLVING POSTFIX Expression: 4 * + 7 6 5 4 2 1 3 2
  • 77. 77 POSTFIX EXPRESSION SOLVING POSTFIX Expression: * + Here we pop two time and perform multiplication on elements (4*2) and push the Result in to the stack 7 6 5 4 2 1 3 4 2
  • 78. 78 POSTFIX EXPRESSION SOLVING POSTFIX Expression: + 7 6 5 4 2 1 3 8
  • 79. 79 POSTFIX EXPRESSION SOLVING POSTFIX Expression: 3 2 4 * + 7 6 5 4 2 1 11
  • 80. 80 The N-Queens Problem Can the queens be placed on the board so that no two queens are attacking each other in chess board
  • 81. 81 The N-Queens Problem Two queens are not allowed in the same rowTwo queens are not allowed in the same row
  • 82. 82 The N-Queens Problem Two queens are not allowed in the same row, or in the same column...Two queens are not allowed in the same row, or in the same column...
  • 83. 83 The N-Queens Problem Two queens are not allowed inTwo queens are not allowed in the same row, or in the samethe same row, or in the same column, or along the samecolumn, or along the same diagonal.diagonal.r along the same diagonal.
  • 84. 84 The N-Queens Problem The number of queens, and the size of the board can vary. The number of queens, and the size of the board can vary. N Queens N columns
  • 85. 85 The 3-Queens Problem The program uses aThe program uses a stack to keep track ofstack to keep track of where each queen iswhere each queen is placed.placed.
  • 86. 86 The 3-Queens Problem Each time the program decides to place a queen on the board, the position of the new queen is stored in a record which is placed in the stack. ROW 1, COL 1
  • 87. 87 The 3-Queens Problem We also have an integer variable to keep track of how many rows have been filled so far. ROW 1, COL 1 1 filled
  • 88. 88 The 3-Queens Problem Each time we try to place a new queen in the next row, we start by placing the queen in the first column ROW 1, COL 1 1 filled ROW 2, COL 1
  • 89. 89 The 3-Queens Problem if there is a conflict with another queen, then we shift the new queen to the next column. ROW 1, COL 1 1 filled ROW 2, COL 2
  • 90. 90 The 3-Queens Problem ROW 1, COL 1 1 filled ROW 2, COL 3 When there are noWhen there are no conflicts, we stop andconflicts, we stop and add one to the value ofadd one to the value of filled.filled.
  • 91. 91 The 3-Queens Problem When there are no conflicts, we stop and add one to the value of filled. ROW 1, COL 1 2 filled ROW 2, COL 3
  • 92. 92 The 3-Queens Problem Let's look at the third row. The first position we try has a conflict ROW 1, COL 1 2 filled ROW 2, COL 3 ROW 3, COL 1
  • 93. 93 The 3-Queens Problem so we shift to column 2. But another conflict arises ROW 1, COL 1 2 filled ROW 2, COL 3 ROW 3, COL 2
  • 94. 94 The 3-Queens Problem and we shift to the third column. Yet another conflict arises ROW 1, COL 1 2 filled ROW 2, COL 3 ROW 3, COL 3
  • 95. 95 The 3-Queens Problem and we shift to column 4. There's still a conflict in column 4, so we try to shift rightward again ROW 1, COL 1 2 filled ROW 2, COL 3 ROW 3, COL 4
  • 96. 96 The 3-Queens Problem but there's nowhere else to go. ROW 1, COL 1 2 filled ROW 2, COL 3 ROW 3, COL 4
  • 97. 97 The 3-Queens Problem When we run out of room in a row:  pop the stack,  reduce filled by 1  and continue working on the previous row. ROW 1, COL 1 1 filled ROW 2, COL 3
  • 98. 98 The 3-Queens Problem Now we continue working on row 2, shifting the queen to the right. ROW 1, COL 1 1 filled ROW 2, COL 4
  • 99. 99 The 3-Queens Problem This position has no conflicts, so we can increase filled by 1, and move to row 3. ROW 1, COL 1 2 filled ROW 2, COL 4
  • 100. 100 The 3-Queens Problem In row 3, we start again at the first column. ROW 1, COL 1 2 filled ROW 2, COL 4 ROW 3, COL 1
  • 101. 101 The 3-Queens Problem In row 3, we start again at the first column. ROW 1, COL 1 3 filled ROW 2, COL 4 ROW 3, COL 2
  • 102. 102 QUEUES A queue is a data structure that maintains a “first-in first-out” (FIFO) ordering. In contrast, a stack maintains a “last-in first-out” (LIFO) ordering. A queue adds new elements at the end. An element can only be removed at the front. This is an abstraction of the “first-come first-served” practice.
  • 103. 103 QUEUE OPERATIONS A queue has two operations: QINSERT QDELETE An enqueue operation adds new elements at the end of the queue or its tail. This is similar to the stack operation push; only that push now is done at the end of the array instead of at the front (or top). A dequeue operation removes an element from the front of the array or its head.
  • 104. 104 QUEUE INSERTION QINSERT(rear, item) 1. IF rear == MAX_QUEUE_SIZE_1 then Print queue_full Return; 2. INFO [++rear] = item;
  • 105. 105 QUEUE DELETION QDELETE(front, rear) 1. IF front == rear then Return queue_empty( ); Return queue [++ front];
  • 106. 106 QUEUE OFFSET DATA 0 1 2 3 0 rear 0 OFFSET DATA 0 1 2 3 A front 1 rear 1 OFFSET DATA 0 1 2 3 A B front 1 rear 2 OFFSET DATA 0 1 2 3 B front 2 rear 2 front Insert A Insert B delete
  • 107. 107 CIRCULAR QUEUE When a new item is inserted at the rear, the to rear moves upwards. Similarly, when an item is deleted from the queue the front arrow moves downwards. After a few insert and delete operations the rear might reach the end of the queue and no more items can be inserted although the items from the front of the queue have been deleted and there is space in the queue.
  • 108. 108 CIRCULAR QUEUE To solve this problem, queues implement wrapping around. Such queues are called Circular Queues. Both the front and the rear wrap around to the beginning of the array when they reached the MAX size of the queue. It is also called as “Ring buffer”.
  • 109. 109 CIRCULAR QUEUE INSERTION QINSERT (QUEUE, N, FRONT, ITEM) This procedure insert an element ITEM into a queue. 1. [Queue already filled?] IF ( FRONT==1 and REAR==N ) or FRONT ==REAR + 1,then: write: overflow, and Return 2.[Find new value of REAR] IF FRONT==NULL then [Queue initially empty.] Set FRONT=1 and REAR=1 ELSE IF REAR ==N then Set REAR=1 ELSE set REAR=REAR+1 [End of if structure]
  • 110. 110 CIRCULAR QUEUE INSERTION 3. Set QUEUE[REAR]=ITEM.[This inserts new element] 4. Return.
  • 111. 111 CIRCULAR QUEUE DELETION QDELETE(QUEE, N, FRONT, REAR, ITEM) This procedure deletes an element from a queue and assigns it to the variable ITEM 1.[Queue already empty] if FRONT=NULL then write UNDERFLOW, and Return 2. Set ITEM=QUEUE[FRONT] 3. [Find new value of FRONT] If FRONT =REAR then [Queue has only one element to start] Set FRONT=NULL and REAR=NULL
  • 112. 112 CIRCULAR QUEUE DELETION Else if FRONT ==N then Set FRONT=1 Else Set FRONT=FRONT +1 [End of if statement] 4.Return
  • 113. 113 CIRCULAR QUEUE DELETION EMPTY QUEUE [2] [3] [2] [3] [1] [4] [1] [4] [0] [5] [0] [5] front = 0 front = 0 rear = 0 rear = 3 J2 J1 J3
  • 114. 114 CIRCULAR QUEUE DELETION [2] [3] [2] [3] [1] [4][1] [4] [0] [5] [0] [5] front =0 rear = 5 front =4 rear =3 J2 J3 J1 J4 J5 J6 J5 J7 J8 J9
  • 115. 115 PRIORITY QUEUE A priority queue is a collection of elements such that each element has been assigned a priority and such that the order in which elements are deleted and processed comes from the following rules 1. An element of a higher priority is processed before any elements of lower priority 2. Two elements with the same priority are processed according to the order in which they were added to the queue
  • 116. 116 ARRAY REPRESENTATION PRIORITY QUEUE Use a separate queue for each level of priority Each such queue will appear in its own circular array and must have its own pair of pointers FRONT and REAR In fact, if each queue is allocated the same amount of space in two-dimensional array QUEUE can be used instead of linear array
  • 117. 117 DELETION ON PRIORITY QUEUE Deletion This algorithm deletes and processes the first element in a priority queue maintained by a two-dimensional array QUEUE 1.[Find the first nonempty queue] Find the smallest k that FRONT!=NULL 2.Delete and process the front element in row K of QUEUE
  • 118. 118 INSERTION ON PRIORITY QUEUE Insertion This algorithm adds an ITEM with priority number M to a priority queue maintained by a two-dimensional array QUEUE 1. Insert ITEM as the rear element in row M of QUEUE 2. Exit
  • 119. 119 LINKED LIST Linked list Linear collection of self-referential class objects, called nodes Connected by pointer links Accessed via a pointer to the first node of the list Subsequent nodes are accessed via the link-pointer member of the current node Link pointer in the last node is set to null to mark the list’s end Use a linked list instead of an array when You have an unpredictable number of data elements Your list needs to be sorted quickly
  • 120. 120 TYPES OF LINKED LIST Types of linked lists: Singly linked list Begins with a pointer to the first node Terminates with a null pointer Only traversed in one direction Circular, singly linked Pointer in the last node points back to the first node Doubly linked list Two “start pointers” – first element and last element Each node has a forward pointer and a backward pointer Allows traversals both forwards and backwards Circular, doubly linked list Forward pointer of the last node points to the first node and backward pointer of the first node points to the last node
  • 121. 121 linked list Start Node A placeholder node at the beginning of the list, used to simplify list processing. It doesn’t hold any data Tail Node A placeholder node at the end of the list, used to simplify list processing
  • 122. 122 Singly linked list Single Linked List Consists of data elements and reference to the next Node in the linked list First node is accessed by reference Last node is set to NULL A B C Start Tail
  • 123. 123 SINGLE LINKED LIST INSERTION INSFIRST(INFO, LINK, START, AVAIL, ITEM) This algorithm inserts ITEM as the first node in the list 1. [OVERFLOW?] If AVAIL=NULL then :Write OVERFLOW and Exit 2. [Remove first node from AVIL list] Set NEW =AVAIL and AVAIL=LINK[AVAIL] 3. Set INFO[NEW]=ITEM [Copies new data into new node] 4. Set LINK[NEW]=START [new node now points to original first node] 5. Set START=NEW [Changes START so it points to the node] 6. Exit
  • 124. 124 SINGLE LINKED LIST INSERTION s Xcda current 1 start
  • 125. 125 SINGLE LINKED LIST INSERTION s Xcda current 1 start
  • 126. 126 SINGLE LINKED LIST INSERTION s Xcda current 1 start
  • 127. 127 SINGLE LINKED LIST INSERTION s Xcda current 1 start
  • 128. 128 SINGLE LINKED LIST INSERTION s Xcda current 1 start
  • 129. 129 SINGLE LINKED LIST INSERTION INSLOC(INFO, LINK,START, AVAIL, LOC, ITEM) This algorithm inserts ITEM so that ITEM follows the node with location LOC or inserts ITEM as the first node when LOC=NULL 1. [OVERFLOW ?] If AVAIL==NULL then write OVERFLOW and EXIT 2. [Remove first node from AVAIL list] 3. Set INFO[NEW]=ITEM[copies new data into new node] 4. If LOC==NULL then :[insert as first node] Set LINK[NEW]=Start and START=NEW else [insert after node with location LOC] Set LINK[NEW]=LINK[LOC] and LINK[LOC]=NEW end of if structure 5. exit
  • 130. 130 SINGLE LINKED LIST INSERTION 9 6 X532start temp current
  • 131. 131 SINGLE LINKED LIST INSERTION 9 6 X532start temp current
  • 132. 132 SINGLE LINKED LIST INSERTION 9 6 X532start temp current
  • 133. 133 SINGLE LINKED LIST INSERTION 9 6 X532start temp current
  • 134. 134 SINGLE LINKED LIST DELETION DELETE(INFO, LINK,START, AVAIL, ITEM) This algorithm deletes from a linked list the first node N which contains the given ITEM of information 1. [Use procedure FIND given after this algorithm] FIND(INFO, LINK, START, ITEM, LOC, LOCP) 2. If LOC==NULL then: Write ITEM not in list and exit 3. If LOCP==NUL then Set START=LINK[START] else : Set LINK[LOCP]=LINK[LOC] 3. {Return deleted node to the AVAIL list] Set LINK[LOC]=AVAIL and AVAIL=LOC 4. Exit
  • 135. 135 SINGLE LINKED LIST DELETION FINDB(INFO, START, ITEM, LOC, LOCP) This procedure finds the location LOC of first node N which contains ITEM and the location LOVP of the node preceding N. if ITEM does not appear in the list then the procedure sets LOC=NULL and if ITEM appears in the first node then it sets LOCP=NULL 1. [list empty?] if START==NULL then Set LOC =NULL and LOCP==NULL and return 2. [ITEM in first node ] if INFO[START]==ITEM then Set LOC=START and LOCP=NULL and return 3. Set SAVE=START and PRT=LINK[START] 4. Repeat steps 5 and 6 while PTR!=NULL 5. If INFO[PTR]==ITEM then Set LOC=PTR and LOCP=NULL
  • 136. 136 SINGLE LINKED LIST DELETION 6. Set SAVE=PTR and PTR=LINK[PTR] 7. Set LOC=NULL 8. Return
  • 137. 137 SINGLE LINKED LIST DELETION 6 X532start LOCP LOC
  • 138. 138 SINGLE LINKED LIST DELETION 6 X532start LOCP LOC
  • 139. 139 SINGLE LINKED LIST DELETION 6 X532start LOCP LOC
  • 140. 140 Double Linked Lists Consists of nodes with two linked references one points to the previous and other to the next node Maximises the needs of list traversals Compared to single list inserting and deleting nodes is a bit slower as both the links had to be updated It requires the extra storage space for the second list A B C start Tail
  • 141. 141 Insertion Double Linked Lists INSERTWL(INFO,FORW, BACK, STACK,AVAIL,LOCA,LOCB, ITEM) 1. [OVERFLOW?] If AVAIL==NULL then write OVER FLOW and exit 2. [Remove node from AVAIL list and copy new data into node] Set NEW=AVIAL, AVIAL=FORW[AVAIL] INFO[NEW]=ITEM 3. [Insert node into list] Set FORW[LOCA]=NEW, FORW[NEW]=LOCB BACK[LOCB]=NEW BACK[NEW]=LOCA 4. Exit
  • 142. 142 Insertion Double Linked Lists 3 4 7 start Tail Node A Node B LOC A LOC B 7NEW
  • 143. 143 Insertion Double Linked Lists 3 4 7 start Tail Node A Node B LOC A LOC B 7NEW
  • 144. 144 Insertion Double Linked Lists 3 4 7 start Tail Node A Node B LOC A LOC B 7NEW
  • 145. 145 Insertion Double Linked Lists 3 4 7 start Tail Node A Node B LOC A LOC B 7NEW
  • 146. 146 Insertion Double Linked Lists 3 4 7 start Tail Node A Node B LOC A LOC B 7NEW
  • 147. 147 Deletion Double Linked Lists DELTWL(INFO, FORW, BACK, START, AVAIL, LOC) 1. [Delete node] Set FORE[BACK[LOC]]=FORW[LOC] Set BACK[FORW[LOC]]=BACK[LOC] 2. [Return node to AVAIL list] Set FORW[LOC]=AVAIL and AVAIL=LOC 3. Exit
  • 148. 148 Deletion Double Linked Lists A B C start Tail LOC
  • 149. 149 Deletion Double Linked Lists A B C start Tail LOC
  • 150. 150 Deletion Double Linked Lists A B C start Tail
  • 151. 151 Deletion Double Linked Lists A B C start Tail