computer notes - Data Structures - 2

Page 1

Class No.02 Data Structures http://ecomputernotes.com


Implementing Lists 

We have designed the interface for the List; we now must consider how to implement that interface.

http://ecomputernotes.com


Implementing Lists 

We have designed the interface for the List; we now must consider how to implement that interface. Implementing Lists using an array: for example, the list of integers (2, 6, 8, 7, 1) could be represented as:



A

2

6

8

7

1

1

2

3

4

5

current 3

http://ecomputernotes.com

size 5


List Implementation  

add(9); current position is 3. The new list would thus be: (2, 6, 8, 9, 7, 1) We will need to shift everything to the right of 8 one place to the right to make place for the new element ‘9’. step 1:

step 2:

A

A

2

6

8

1

2

3

4

7

1

5

6

2

6

8

9

7

1

1

2

3

4

5

6

http://ecomputernotes.com

current 3

size 5

current 4

size 6

notice: current points to new element


Implementing Lists 

next(): A

2

6

8

9

7

1

1

2

3

4

5

6

current 4 5

http://ecomputernotes.com

size 6


Implementing Lists



There are special cases for positioning the current pointer: a. past the last array cell b. before the first cell

http://ecomputernotes.com


Implementing Lists 

There are special cases for positioning the current pointer: a. past the last array cell b. before the first cell



We will have to worry about these when we write the actual code.

http://ecomputernotes.com


Implementing Lists 

remove(): removes the element at the current index Step 1:

Step 2:

A

A

2

6

8

9

1

2

3

4

1 5

2

6

8

9

1

1

2

3

4

5

6

current 5

size 6 5

current 5

http://ecomputernotes.com

size 5


Implementing Lists 

remove(): removes the element at the current index Step 1:

Step 2:



A

A

2

6

8

9

1

2

3

4

1 5

2

6

8

9

1

1

2

3

4

5

6

current 5

size 6 5

current 5

size 5

We fill the blank spot left by the removal of 7 by shifting the values to the right of position 5 over to the left one space.


Implementing Lists find(X): traverse the array until X is located. int find(int X) { int j; for(j=1; j < size+1; j++ ) if( A[j] == X ) break; if( j < size+1 ) { // found X current = j; // current points to where X found return 1; // 1 for true } return 0; // 0 (false) indicates not found }

http://ecomputernotes.com


Implementing Lists 

Other operations: get() update(X) length() back() start() end()

 return A[current];  A[current] = X;  return size;  current--;  current = 1;  current = size;

http://ecomputernotes.com


Analysis of Array Lists 

add   

we have to move every element to the right of current to make space for the new element. Worst-case is when we insert at the beginning; we have to move every element right one place. Average-case: on average we may have to move half of the elements

http://ecomputernotes.com


Analysis of Array Lists 

remove  

find  

Worst-case: remove at the beginning, must shift all remaining elements to the left. Average-case: expect to move half of the elements.

Worst-case: may have to search the entire array Average-case: search at most half the array.

Other operations are one-step.

http://ecomputernotes.com


List Using Linked Memory 

Various cells of memory are not allocated consecutively in memory.

http://ecomputernotes.com


List Using Linked Memory  

Various cells of memory are not allocated consecutively in memory. Not enough to store the elements of the list.

http://ecomputernotes.com


List Using Linked Memory   

Various cells of memory are not allocated consecutively in memory. Not enough to store the elements of the list. With arrays, the second element was right next to the first element.

http://ecomputernotes.com


List Using Linked Memory    

Various cells of memory are not allocated consecutively in memory. Not enough to store the elements of the list. With arrays, the second element was right next to the first element. Now the first element must explicitly tell us where to look for the second element.

http://ecomputernotes.com


List Using Linked Memory     

Various cells of memory are not allocated consecutively in memory. Not enough to store the elements of the list. With arrays, the second element was right next to the first element. Now the first element must explicitly tell us where to look for the second element. Do this by holding the memory address of the second element

http://ecomputernotes.com


Linked List 

Create a structure called a Node. object

next

The object field will hold the actual list element.

The next field in the structure will hold the starting location of the next node.

Chain the nodes together to form a linked list.

http://ecomputernotes.com


Linked List 

Picture of our list (2, 6, 7, 8, 1) stored as a linked list: head 2

6

8

7

1

size=5

current

http://ecomputernotes.com


Linked List Note some features of the list: 

Need a head to point to the first node of the list. Otherwise we won’t know where the start of the list is.

http://ecomputernotes.com


Linked List Note some features of the list: 

Need a head to point to the first node of the list. Otherwise we won’t know where the start of the list is.

The current here is a pointer, not an index.

http://ecomputernotes.com


Linked List Note some features of the list: 

Need a head to point to the first node of the list. Otherwise we won’t know where the start of the list is.

The current here is a pointer, not an index.

The next field in the last node points to nothing. We will place the memory address NULL which is guaranteed to be inaccessible.

http://ecomputernotes.com


Linked List 

Actual picture in memory:

current

head

1051

6

1052

1063

1053

1063

1054

2

1055

1051

1056

2

6

8

7

1

current

1057

7

1058

1060

1059

head

1060

1

1061

0

1062

1054

1063

8

1064

1057

http://ecomputernotes.com 1065


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.