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

Computer notes - List

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Computer notes  - List

Class No.02

Data Structures

http://ecomputernotes.com

Page 2: Computer notes  - List

Implementing Lists

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

http://ecomputernotes.com

Page 3: Computer notes  - List

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 6 8 7 11 2 3 4 5

2current

3

size

5

http://ecomputernotes.com

Page 4: Computer notes  - List

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’.

current

3

size

5step 1: A 6 8 7 1

1 2 3 4 5

26

current

4

size

6step 2: A 6 8 7 1

1 2 3 4 5

26

9

notice: current pointsto new elementhttp://ecomputernotes.com

Page 5: Computer notes  - List

Implementing Lists

next():

current

4

size

6A 6 8 7 1

1 2 3 4 5

26

95

http://ecomputernotes.com

Page 6: Computer notes  - List

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

Page 7: Computer notes  - List

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

Page 8: Computer notes  - List

Implementing Lists remove(): removes the element at the current

index

current

5

size

6A 6 8 1

1 2 3 4 5

26

9

5

Step 1:

current

5

size

5A 6 8 1

1 2 3 4 5

2 9Step 2:

http://ecomputernotes.com

Page 9: Computer notes  - List

Implementing Lists remove(): removes the element at the current

index

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.

current

5

size

5A 6 8 1

1 2 3 4 5

2 9Step 2:

current

5

size

6A 6 8 1

1 2 3 4 5

26

9

5

Step 1:

Page 10: Computer notes  - List

Implementing Listsfind(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

Page 11: Computer notes  - List

Implementing Lists

Other operations:

get() return A[current];update(X) A[current] = X;length() return size;back() current--;start() current = 1;end() current = size;

http://ecomputernotes.com

Page 12: Computer notes  - List

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

Page 13: Computer notes  - List

Analysis of Array Lists

remove Worst-case: remove at the beginning, must shift all

remaining elements to the left. Average-case: expect to move half of the elements.

find 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

Page 14: Computer notes  - List

List Using Linked Memory

Various cells of memory are not allocated consecutively in memory.

http://ecomputernotes.com

Page 15: Computer notes  - List

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

Page 16: Computer notes  - List

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

Page 17: Computer notes  - List

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

Page 18: Computer notes  - List

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

Page 19: Computer notes  - List

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

Page 20: Computer notes  - List

Linked List

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

2 6 8 7 1

head

current

size=5

http://ecomputernotes.com

Page 21: Computer notes  - List

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

Page 22: Computer notes  - List

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

Page 23: Computer notes  - List

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

Page 24: Computer notes  - List

Linked List Actual picture in memory:

1051

1052

1055

1059

1060

1061

1062

1063

1064

1056

1057

1058

1053

1054 2

6

8

7

1

1051

1063

1057

1060

0

head 1054

1063current

2 6 8 7 1

head

current

1065http://ecomputernotes.com