Presentation is loading. Please wait.

Presentation is loading. Please wait.

Unsorted Lists CS 308 – Data Structures. What is a list? A list is a homogeneous collection of elements. Linear relationship between elements: (1) Each.

Similar presentations


Presentation on theme: "Unsorted Lists CS 308 – Data Structures. What is a list? A list is a homogeneous collection of elements. Linear relationship between elements: (1) Each."— Presentation transcript:

1 Unsorted Lists CS 308 – Data Structures

2 What is a list? A list is a homogeneous collection of elements. Linear relationship between elements: (1) Each element except the first one has a unique predecessor. (2) Each element except the last one has a unique successor. Length: the number of items in the list.

3 What is an unsorted list? A list in which data items are placed in no particular order. What is a sorted list? A list in which data items are placed in a particular order. Key: a member of the class whose value is used to determine the order of the items in the list.

4

5 Operations MakeEmpty Boolean IsFull int LengthIs RetrieveItem (ItemType& item, Boolean& found) InsertItem (ItemType item) DeleteItem (ItemType item) ResetList void GetNextItem (ItemType& item)

6 RetrieveItem (ItemType& item, Boolean& found) Function: Retrieves list element whose key matches item's key (if present). Preconditions: (1) List has been initialized, (2) Key member of item has been initialized. Postconditions: (1) If there is an element someItem whose key matches item's key, then found=true and item is a copy of someItem; otherwise, found=false and item is unchanged, (2) List is unchanged.

7 InsertItem (ItemType item) Function: Adds item to list Preconditions: (1) List has been initialized, (2) List is not full, (3) item is not in list. Postconditions: item is in list.

8 DeleteItem (ItemType item) Function: Deletes the element whose key matches item's key Preconditions: (1) List has been initialized, (2) Key member of item has been initialized, (3) There is only one element in list which has a key matching item's key. Postconditions: No element in list has a key matching item's key.

9 ResetList Function: Initializes current position for an iteration through the list. Preconditions: List has been initialized Postconditions: Current position is prior to first element in list.

10 void GetNextItem (ItemType& item) Function: Gets the next element in list. Preconditions: (1) List has been initialized, (2) Current position is defined Postconditions: (1) Current position is updated to next position, (2) item is a copy of element at current position.

11 Unsorted List Implementation template class UnsortedType { public: void MakeEmpty(); bool IsFull() const; int LengthIs() const; void RetrieveItem(ItemType&, bool&); void InsertItem(ItemType); void DeleteItem(ItemType); void ResetList(); bool IsLastItem() void GetNextItem(ItemType&); private: int length; ItemType info[MAX_ITEMS]; int currentPos; };

12

13 Unsorted List Implementation template void UnsortedType ::MakeEmpty() { length = 0; } template bool UnsortedType ::IsFull() const { return (length == MAX_ITEMS); } template int UnsortedType ::LengthIs() const { return length; } (cont.)

14

15 Unsorted List Implementation template void UnsortedType ::RetrieveItem (ItemType& item, bool& found) { int location = 0; found = false; while( (location < length) && !found) if (item == info[location]) { found = true; item = info[location]; } else location++; } (cont.)

16 Unsorted List Implementation template void UnsortedType ::InsertItem (ItemType item) { info[length] = item; length++; } (cont.)

17 Unsorted List Implementation (cont.) template void UnsortedType ::DeleteItem(ItemType item) { int location = 0; while(item != info[location]) location++; info[location] = info[length - 1]; length--; }

18

19 Unsorted List Implementation (cont.) template void UnsortedType ::ResetList() { currentPos = -1; } template bool UnsortedType ::IsLastItem() { return(currentPos == length - 1); } template void UnsortedType ::GetNextItem (ItemType& item) { currentPos++; item = info[currentPos]; }

20

21 Write a client function that splits an unsorted list into two unsorted lists using the following specification. SplitLists (UnsortedType list, ItemType item, UnsortedType& list1, UnsortedType& list 2) Function: Divides list into two lists according to the key of item. Preconditions: list has been initialized and is not empty. Postconditions: list1 contains all the items of list whose keys are less than or equal to item’s key. list2 contains all the items of list whose keys are greater than item’s key.

22 ItemType listItem; list.ResetList(); while ( !list.IsLastItem()) { list.GetNextItem(listItem); if(listItem > item) { if (!list2.IsFull()) list2.InsertItem(listItem); } else { if ( !list1.IsFull()) list1.InsertItem(listItem); }

23 Exercises 1, 9


Download ppt "Unsorted Lists CS 308 – Data Structures. What is a list? A list is a homogeneous collection of elements. Linear relationship between elements: (1) Each."

Similar presentations


Ads by Google