Data structure and algorithms cấu trúc dữ liệu và thuật toán ch04 list

89 2 0
Data structure and algorithms   cấu trúc dữ liệu và thuật toán   ch04 list

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Data Structure and Algorithms [CO2003] Chapter - List Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Faculty of Computer Science and Engineering Hochiminh city University of Technology Contents Linear list concepts Array implementation Singly linked list Other linked lists Comparison of implementations of list Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Outcomes • L.O.2.1 - Depict the following concepts: (a) array list and linked list, including single link and double links, and multiple links; (b) stack; and (c) queue and circular queue • L.O.2.2 - Describe storage structures by using pseudocode for: (a) array list and linked list, including single link and double links, and multiple links; (b) stack; and (c) queue and circular queue • L.O.2.3 - List necessary methods supplied for list, stack, and queue, and describe them using pseudocode • L.O.2.4 - Implement list, stack, and queue using C/C++ Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Outcomes • L.O.2.5 - Use list, stack, and queue for problems in real-life, and choose an appropriate implementation type (array vs link) • L.O.2.6 - Analyze the complexity and develop experiment (program) to evaluate the efficiency of methods supplied for list, stack, and queue • L.O.8.4 - Develop recursive implementations for methods supplied for the following structures: list, tree, heap, searching, and graphs • L.O.1.2 - Analyze algorithms and use Big-O notation to characterize the computational complexity of algorithms composed by using the following control structures: sequence, branching, and iteration (not recursion) Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Linear list concepts Linear list concepts Definition A linear list is a data structure in which each element has a unique successor Example • Array • Linked list Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Linear list concepts Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Linear list concepts General list: • No restrictions on which operation can be used on the list • No restrictions on where data can be inserted/deleted • Unordered list (random list): Data are not in particular order • Ordered list: data are arranged according to a key Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Linear list concepts Restricted list: • Only some operations can be used on the list • Data can be inserted/deleted only at the ends of the list • Queue: FIFO (First-In-First-Out) • Stack: LIFO (Last-In-First-Out) Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 List ADT Definition A list of elements of type T is a finite sequence of elements of T Basic operations: • Construct a list, leaving it empty • Insert an element • Remove an element • Search an element • Retrieve an element • Traverse the list, performing a given operation on each element Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Linked list implementation in C++ How to use Linked List data structure? // int value ; L i n k e d L i s t ∗ m y L i s t = m y L i s t −>C l o n e ( ) ; c o u t G e t I t e m ( , v a l u e ) ; c o u t c o u n t ) return 0; Node ∗ newPtr , ∗ p P r e ; newPtr = new Node ( ) ; i f ( newPtr == NULL) return 0; newPtr−>d a t a = v a l u e ; i f ( head == NULL) { head = newPtr ; newPtr−>l i n k = NULL ; } e l s e i f ( p o s i t i o n == ) { newPtr−>l i n k = head ; head = newPtr ; } Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 72 / 83 Sample Solution: Insert else { // F i n d t h e p o s i t i o n p P r e = t h i s −>head ; o f pPre f o r ( i n t i = ; i < p o s i t i o n −1; i ++) p P r e = pPre−>l i n k ; // I n s e r t new node newPtr−>l i n k = pPre−>l i n k ; pPre−>l i n k = newPtr ; } t h i s −>c o u n t ++; return 1; } Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 73 / 83 Sample Solution: Delete template i n t L i n k e d L i s t : : D e l e t e I t e m ( i n t p o s i t i o n ) { i f ( p o s i t i o n < | | p o s i t i o n > t h i s −>c o u n t ) return 0; Node ∗ d l t P t r , ∗ p P r e ; i f ( p o s i t i o n == ) { d l t P t r = head ; head = head−>l i n k ; } else { p P r e= t h i s −>head ; f o r ( i n t i = ; i < p o s i t i o n −1; i ++) p P r e = pPre−>l i n k ; d l t P t r = pPre−>l i n k ; pPre−>l i n k = d l t P t r −>l i n k ; } delete dltPtr ; t h i s −>c o u n t −−; return 1; } Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 74 / 83 Sample Solution: Clone template L i n k e d L i s t ∗ L i n k e d L i s t : : C l o n e ( ) { L i n k e d L i s t ∗ r e s u l t = new L i n k e d L i s t ( ) ; Node∗ p = t h i s −>head ; w h i l e ( p != NULL) { r e s u l t −>I n s e r t L a s t ( p−>d a t a ) ; p = p−>l i n k ; } r e s u l t −>c o u n t = t h i s −>c o u n t ; return result ; } Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 75 / 83 Reverse a linked list Exercise template v o i d L i n k e d L i s t : : R e v e r s e ( ) { // } Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 76 / 83 Other linked lists Doubly Linked List Figure 4: Doubly Linked List allows going forward and backward node d a t a n e x t

p r e v i o u s

end node Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn list c u r r e n t

end l i s t Data Structure and Algorithms [CO2003] 77 / 83 Doubly Linked List Figure 5: Doubly Linked List allows going forward and backward Figure 6: Insert an element in Doubly Linked List Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 78 / 83 Circularly Linked List node d a t a l i n k

end node Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn list c u r r e n t

end l i s t Data Structure and Algorithms [CO2003] 79 / 83 Double circularly Linked List node d a t a n e x t

p r e v i o u s

end node Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn list c u r r e n t

end l i s t Data Structure and Algorithms [CO2003] 80 / 83 Comparison of implementations of list Arrays: Pros and Cons • Pros: • Access to an array element is fast since we can compute its location quickly • Cons: • If we want to insert or delete an element, we have to shift subsequent elements which slows our computation down • We need a large enough block of memory to hold our array Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 81 / 83 Linked Lists: Pros and Cons • Pros: • Inserting and deleting data does not require us to move/shift subsequent data elements • Cons: • If we want to access a specific element, we need to traverse the list from the head of the list to find it which can take longer than an array access Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 82 / 83 Comparison of implementations of list • Contiguous storage is generally preferable when: • • • • the entries are individually very small; the size of the list is known when the program is written; few insertions or deletions need to be made except at the end of the list; and random access is important • Linked storage proves superior when: • the entries are large; • the size of the list is not known in advance; and • flexibility is needed in inserting, deleting, and rearranging the entries Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] 83 / 83 ... nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Outcomes • L.O.2.1 - Depict the following concepts: (a) array list and linked list, including single link and double links, and multiple... Nguyen, PhD Contact: nddung@hcmut.edu.vn Data Structure and Algorithms [CO2003] / 83 Outcomes • L.O.2.5 - Use list, stack, and queue for problems in real-life, and choose an appropriate implementation... • Data can be inserted/deleted only at the ends of the list • Queue: FIFO (First-In-First-Out) • Stack: LIFO (Last-In-First-Out) Lecturer: Duc Dung Nguyen, PhD Contact: nddung@hcmut.edu.vn Data

Ngày đăng: 25/03/2023, 06:13

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan