



















Preview text:
  lOMoAR cPSD| 58605085 DATA STRUCTURES &   ALGORITHMS  Chapter 3: Lists  Le Van Vinh, PhD 
Faculty of Information Technology 
HCMC University of Technology and Education 
Email: vinhlv@fit.hcmute.edu.vn        lOMoAR cPSD| 58605085 Outline        lOMoAR cPSD| 58605085       lOMoAR cPSD| 58605085 I. List Abstract data type 
❖ A list is a finite, ordered sequence of data  elements. 
❖We present a list as follows: a1, a2, . . ., an, in which  n ≥ 0.  ▪ If n=0: empty list. 
▪ If n > 0: a1 is the first element, an is the last element. 
▪ The number of elements: the length of the list  I. List ADT    ❖ For examples: 
▪ List of students in a class      lOMoAR cPSD| 58605085
▪ List of employees of a company  ▪ List of integer numbers  ▪ …..  I. List ADT   
❖ Operations of a list  ▪ Initialize a list 
▪ Insert an element into a list 
▪ Remove an element in a list 
▪ Search an element in a list  ▪ Traversal a list  ▪ Check a list empty or not 
▪ Sort a list ▪ Merge two lists  ▪ ….      lOMoAR cPSD| 58605085 Outline        lOMoAR cPSD| 58605085  
II.Implement lists using array  ❖ Define a list      lOMoAR cPSD| 58605085 #define Max 100 
#define ElementType NameOfDatatype  struct LIST  { 
ElementType Elements[Max]; // Array of elements 
int len; // The  n umber of elements  } ;  Example :  #define Max 100  struct LIST  {  float M[MaxLen];  int len;  } ;   
II.Implement lists using array  ❖ Define a list      lOMoAR cPSD| 58605085 #define Max 100 
#define ElementType NameOfDatatype  struct LIST  { 
ElementType Elements[Max]; // Array of elements 
int len; //The n umber of elements  } ;  Example :  #define Max 100  struct LIST  {  Student M[MaxLen];  int len;  } ;        lOMoAR cPSD| 58605085
II.Implement lists using array  ❖Insert items 
▪ Insert an item at the beginning (AddFirst(LIST& myList,  int x )) 
▪ Insert an item at the end (AddLast(LIST& myList, int x)) 
▪ Insert an item at position k (AddItem (LIST& myList, int  k, int x))  ❖Remove items 
▪ Delete first item (RemoveFirst(LIST&myList)) 
▪ Delete last item (RemoveLast(LIST& myList)) 
▪ Delete an item at position k (RemoveItem(LIST& myList,  int k)) 
II.Implement lists using array  ❖Other operations 
▪ Initialize the list (InitList(LIST& myList))      lOMoAR cPSD| 58605085
▪ Check the list is empty or not (IsEmptyList(LIST myList)) 
▪ Check the list is full or not (IsFullList(LIST myList)) 
▪ Traversing a list/Print out the list (PrintList(LIST myList))        lOMoAR cPSD| 58605085
II.Implement lists using array  ❖Advanced operations 
▪ Sorting the list (SortList(LIST& myList)) 
▪ Searching an item in the list 
(SearchItem(LIST& myList, int x)) 
▪ Searching items in the list (LIST 
SearchItems(LIST& myList, int x))//Search  items which are >=x 
▪ Merging two lists (AddRange(LIST& myList,  LIST sourceList))  void main()    {      lOMoAR cPSD| 58605085   LIST myList;  A case study  InitList(myList);  AddFirst(myList, 4);  AddFirst(myList, 3);  AddFirst(myList, 2);  AddFirst(myList, 6); for(int 
i=0;icout<RemoveItem(myList, 2);//Xóa phần tử tại vị trí 2 
for(int i=0;icout<for(int i=0;icout<}  void main()  {      LIST myList;  A case study 
InitList(myList);//myList.len=0      lOMoAR cPSD| 58605085 AddFirst(myList, 8);  AddFirst(myList, 7);  AddLast(myList, 6);  AddLast(myList, 6); 
AddItem(myList, 2, 8);//thêm phần tử 8 vào vị trí 2 
for(int i=0;icout<RemoveFirst(myList);  RemoveLast(myList);  for(int i=0;icout<}  void main()  {      LIST myList;  A case study  SinhVien sv;      lOMoAR cPSD| 58605085
InitList(myList);//myList.len=0  NhapSV(sv);  AddFirst(myList, sv);  NhapSV(sv);  AddFirst(myList, sv);  NhapSV(sv);  AddLast(myList, sv);  NhapSV(sv);  AddLast(myList, sv);  NhapSV(sv);  AddItem(myList, 2, sv); 
for(int i=0;iRemoveFirst(myList);  RemoveLast(myList);  for(int  i=0;icout<}  Excercise   
❖Develop a list to store a list of students. Then,  write the following tasks: 
▪ Sort the list in ascending order of GPA      lOMoAR cPSD| 58605085
▪ Insert a new student to the sorted list to have a new  sorted list. 
▪ Get a list of students having GPA is greater than x. 
▪ Remove all students having GPA is greater than x. 
▪ Search k students who have highest GPAs 
II.Implement lists using array  ❖Evaluation  ▪ Strengths 
• Access: random, easy, and quick  • Easy to implement  ▪ Drawbacks 
• Fit size: lack of memory, or waste of memory 
• Insert, remove an element: difficult and expensive      lOMoAR cPSD| 58605085
• All elements are stored in the same space in  memory: inflexible 
II.Implement lists using array 
Insert 5 into the array: a[]={2, 7, 3, 10, 8}  Step 1:    Step 2:        lOMoAR cPSD| 58605085
II.Implement lists using array   
+ The last two elements are unused 
+ Can we insert to this list 9 elements?  Outline        lOMoAR cPSD| 58605085   III.Linked lists  ❖Introduction           lOMoAR cPSD| 58605085 ❖Kinds of linked lists  ❖Singly linked lists  ❖Other linked lists  III.1.Introduction    ❖Ideas 
▪ Using a structure which allows to store 
elements in a list, but enable inserting, 
removing the elements effectively.