1 CSE1301 Computer Programming: Lecture 27 List Manipulation.
-
Upload
roland-cahill -
Category
Documents
-
view
226 -
download
0
Transcript of 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.
![Page 1: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/1.jpg)
1
CSE1301 Computer Programming:
Lecture 27List Manipulation
![Page 2: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/2.jpg)
22
Recall
• List– an array of the same type of elements
• Linear Search– Advantage: list can be unsorted– Disadvantage: O(N)
• Binary Search– Advantage: O(log N)– Disadvantage: list must be sorted
![Page 3: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/3.jpg)
33
Topics• How can we maintain a list?
– unsorted– sorted
• Operations on a list:– initialize the list– add an element– delete an element– find an element– print the list
• Add, Find and Delete: sorted or unsorted ?
![Page 4: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/4.jpg)
44
List: Example#define MAX_COUNT 6 /* Max number of items */#define MAX_LEN 20 /* Max length of a name */
struct nameListRec{ int count; /*Number of items currently in the list*/ char names[MAX_COUNT][MAX_LEN];};typedef struct nameListRec nameList;
nameList students;
students.names
??? ??? ??? ??? ??? ???0 1 2 3 4 5
students.count: ???
![Page 5: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/5.jpg)
55
List: Initialize
nameList newList ( ){ nameList students;
students.count = 0; return students;}
0 1 2 3 4 5
??? ??? ??? ??? ??? ???
students.count: 0
students.names
![Page 6: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/6.jpg)
66
Unsorted List: Add
strcpy(students.names[ ???? ], “Dave”); students.count
students.count: 0
??? ??? ??? ??? ???0 1 2 3 4 5
students.names
???
students.count++;
Dave
![Page 7: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/7.jpg)
77
???Cary
Unsorted List: Add (cont)
students.count++;
strcpy(students.names[ ???? ], “Cary”); students.count
next available position
strcpy(students.names[ ???? ], “Dave”); students.count
Dave ??? ??? ??? ???0 1 2 3 4 5
students.count: 1
students.names
![Page 8: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/8.jpg)
88
Unsorted List: Add (cont)
Dave Cary ??? ??? ??? ???0 1 2 3 4 5
students.count: 2
students.names
strcpy(students.names[ ???? ], “Dave”); students.count
students.count++;
strcpy(students.names[ ???? ], “Cary”); students.count
students.count++;
![Page 9: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/9.jpg)
99
Unsorted List: Add (cont)
nameList addUnsorted ( nameList students, char *newname ){ strcpy(students.names[student.count], newname); students.count++;
return students;}
...nameList cse1301;...cse1301 = newList();cse1301 = addUnsorted(cse1301, “Dave”);cse1301 = addUnsorted(cse1301, “Cary);...
![Page 10: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/10.jpg)
1010
Dave
Sorted List: Add• Case 1: List is empty
– same as unsorted
??? ??? ??? ??? ???0 1 2 3 4 5
students.count: 1
students.names
strcpy(students.names[students.count], “Dave”);
students.count++;
Example: add “Dave”
![Page 11: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/11.jpg)
1111
Sorted List: Add (cont)• Case 2: List is not empty
– find correct position
Dave ??? ??? ??? ??? ???0 1 2 3 4 5
students.count: 1
students.names
Example: add “Abe”
![Page 12: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/12.jpg)
1212
Sorted List: Add (cont)• Case 2: List is not empty
– find correct position– make room by moving all items to the right
Dave ??? ??? ??? ???0 1 2 3 4 5
students.count: 1
students.names
Example: add “Abe”
![Page 13: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/13.jpg)
1313
Sorted List: Add (cont)• Case 2: List is not empty
– find correct position– make room by moving all items to the right– put item in that position
Abe Dave ??? ??? ??? ???0 1 2 3 4 5
students.count: 1
students.names
Example: add “Abe”
![Page 14: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/14.jpg)
1414
Sorted List: Add (cont)• Case 2: List is not empty
– find correct position– make room by moving all to the right– put item in that position– update count
Abe Dave ??? ??? ??? ???0 1 2 3 4 5
students.count: 2
students.names
Example: add “Abe”
![Page 15: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/15.jpg)
1515
Sorted List: Add (cont)• Case 2: List is not empty
Abe Cary Dave Ed ??? ???0 1 2 3 4 5
students.count: 4
students.names
Example: add “Arnie”
![Page 16: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/16.jpg)
1616
Sorted List: Add (cont)• Case 2: List is not empty
Abe Cary Dave Ed ???0 1 2 3 4 5
students.count: 4
students.names
Example: add “Arnie”
![Page 17: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/17.jpg)
1717
Sorted List: Add (cont)• Case 2: List is not empty
Abe Arnie Cary Dave Ed ???0 1 2 3 4 5
students.count: 5
students.names
alphabeticalordering is maintained
Example: add “Arnie”
![Page 18: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/18.jpg)
1818
Sorted List: Add (cont)• Case 2: List is not empty
Abe Arnie Cary Dave Ed ???0 1 2 3 4 5
students.count: 5
students.names
What if the array is already full?
![Page 19: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/19.jpg)
1919
Algorithm addElementcount addElement(array,last,val){ if list is full { print message and exit } else if list is empty { add val in first position of array increment last } else { while ( end of array not reached ) { if ( val < current element ) { shuffle to the right the array elements starting at current element break loop } } insert value in the empty spot of array update last } return position of added element}
![Page 20: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/20.jpg)
2020
Program addElementint addElement( int *arr, int last, int val, int size ){ int count, i; if (last == size-1) {/* list is full */ printf(“List is full\n”); return -1; } else if (last == -1) {/* list is empty */ arr[0] = val; last++; return 0; }
else { for(count=0; count<=last; count++) {/* add before first larger value */ if ( val < arr[count] ) {/* shuffle along starting at the end */ for (i=last; i >= count; i--) { arr[i+1]=arr[i]; } break; } } arr[count] = val; last++; return count; }}
![Page 21: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/21.jpg)
2121
addElement -- Exercise
• Modify the C program so that it works on the struct nameList– Version 1:
• parameters: new item, count and array of strings • return value: whether the list is full
– Version 2: • parameters: new item and a nameList structure• return value: updated struct• use a function called isListFull to determine if the
list is full
![Page 22: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/22.jpg)
2222
List: Add an Element
• Unsorted list– append after the last element
• Sorted list– find correct position– make room for the new element
• Special cases:– list is empty– list is full– item to be inserted is already in the list
![Page 23: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/23.jpg)
2323
List: Print (Version 1)
void printList ( int count, char nomen[][MAX_LEN] ){ int i;
for (i=0; i < count; i++) { printf(“%d %s\n”, i, nomen[i]); }}
printList ( students.count, students.names );
Array of strings
![Page 24: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/24.jpg)
2424
List: Print (Version 2)void printList ( nameList class ){ int i;
for (i=0; i < class.count; i++) { printf(“%d %s\n”, i, class.names[i] ); }}
printList ( students );
![Page 25: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/25.jpg)
2525
List: Find an Element
• Sorted– Use binary search
• Unsorted– Use linear search
• Used for deleting an element
![Page 26: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/26.jpg)
2626
List: Delete an Element• Same for both sorted and unsorted lists
• Algorithm:– find the position of the item to be deleted
• linear or binary search– if found
• move all items one position to the left • decrement count
• Special cases:– list is empty– item not found
![Page 27: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/27.jpg)
2727
List: Delete an Element
Abe Arnie Cary Dave Ed ???0 1 2 3 4 5
students.count: 5
students.names
Example: delete “Cary”
- find the position of the element
![Page 28: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/28.jpg)
2828
List: Delete an Element
Abe Arnie Dave Ed ???0 1 2 3 4 5
students.count: 5
students.names
Example: delete “Cary”
- find the position of the element- remove the element
![Page 29: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/29.jpg)
2929
Dave
List: Delete an Element
Abe Arnie Dave Ed Ed ???0 1 2 3 4 5
students.count: 5
students.names
Example: delete “Cary”
- find the position of the element- remove the element- shuffle the items after the deleted item to the left
We don’t need toactually clear this. Just update count
![Page 30: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/30.jpg)
3030
List: Delete an Element
Abe Arnie Dave Ed Ed ???0 1 2 3 4 5
students.count: 4
students.names
Example: delete “Cary”
- find the position of the element- remove the element- shuffle the items after the deleted item to the left- decrement count
![Page 31: 1 CSE1301 Computer Programming: Lecture 27 List Manipulation.](https://reader036.fdocuments.in/reader036/viewer/2022062312/5518d0b9550346a61f8b5ca4/html5/thumbnails/31.jpg)
3131
Summary
• Operations on lists– initialize, add element, delete element, find
element, print
• Add, Find and Delete: sorted or unsorted?
• Review: array of strings and structs as parameters