computer notes - list
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 integersTRANSCRIPT
![Page 2: Computer notes - List](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/14.jpg)
List Using Linked Memory
Various cells of memory are not allocated consecutively in memory.
http://ecomputernotes.com
![Page 15: Computer notes - List](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022082218/5598ba531a28abc14a8b46c0/html5/thumbnails/24.jpg)
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