cs 241 data organization linked lists
play

CS 241 Data Organization Linked Lists March 27, 2018 Linked List - PowerPoint PPT Presentation

CS 241 Data Organization Linked Lists March 27, 2018 Linked List A B C D E NULL A linked list is a data structure that consists of a sequence of data records such that in each record there is a field that contains a reference (a


  1. CS 241 Data Organization Linked Lists March 27, 2018

  2. Linked List A B C D E NULL • A linked list is a data structure that consists of a sequence of data records such that in each record there is a field that contains a reference (a link) to the next record in the sequence. • In the C programming language, the “link” is usually implemented as a pointer. The link could, however, be implemented in other ways (i.e. as an array index).

  3. Why Linked Lists? Why not just stick with arrays? • The order of the linked items may be different from the order that the data items are stored in memory or on disk. • Size is not predetermined, so can make better use of memory. • We can insert and remove elements without having to reorganize the entire structure.

  4. Linked Lists in File Systems • Most file systems store data as linked lists of data blocks. • “Defragmenting” a hard disk moves the blocks to maximize the number of blocks that are physically adjacent.

  5. Linked List Access and Insertion • Access to the i th element requires walking the list from the beginning and counting links to i. Such a process is said to have a time complexity of O(n). • Insertion or Deletion at a known access point has a constant time complexity time O(1).

  6. Basic Structure Nodes are self-referential structures. struct ListNode { int data; struct ListNode* next; };

  7. Initializing struct ListNode* createNode(int data) { struct ListNode* node = malloc(sizeof(struct ListNode )); node ->data = data; node ->next = NULL; return node; }

  8. Looking through a list void printlist(struct ListNode* head) { struct ListNode* current = head; while (current != NULL) { printf("%d ", current ->data ); current = current ->next; } printf("\n"); }

  9. List Length int listlength(struct ListNode* head) { struct ListNode* current = head; int count = 0; while (current != NULL) { count ++; current = current ->next; } return count; }

  10. Inserting an element • Beginning of the list • Middle of the list • End of the list

  11. Insert at beginning struct ListNode* newNode = createNode(data ); newNode ->next = head; head = newNode;

  12. Insert in middle struct ListNode* newNode = createNode(data ); newNode ->next = currentNode ->next; currentNode ->next = newNode;

  13. Remove from beginning struct ListNode* node = head; head = node ->next; free(node );

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend