1 / 13

Linked Lists in C and C++ By Ravi Prakash PGT(CS)

Linked Lists in C and C++ By Ravi Prakash PGT(CS). Note: elements are usually the same type (but not always). Definitions. Linked List A data structure in which each element is dynamically allocated and in which elements point to each other to define a linear relationship

gaenor
Download Presentation

Linked Lists in C and C++ By Ravi Prakash PGT(CS)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linked Lists in C and C++ By Ravi Prakash PGT(CS)

  2. Note: elements are usually thesame type (but not always). Definitions • Linked List • A data structure in which each element is dynamically allocated and in which elements point to each other to define a linear relationship • Singly- or doubly-linked • Stack, queue, circular list • Tree • A data structure in which each element is dynamically allocated and in which each element has more than one potential successor • Defines a partial order

  3. Note: payload may bemultiple members. payload payload payload payload next next next next Linked List struct listItem {type payload;struct listItem *next; };

  4. Linked List (continued) • Items of list are usually same type • Generally obtained from malloc() • Each item points to next item • Last item points to null • Need “head” to point to first item! • “Payload” of item may be almost anything • A single member or multiple members • Any type of object whose size is known at compile time • Including struct, union, char* or other pointers • Also arrays of fixed size at compile time (see p. 214)

  5. Usage of Linked Lists • Not massive amounts of data • Linear search is okay • Sorting not necessary • or sometimes not possible • Need to add and delete data “on the fly” • Even from middle of list • Items often need to be added to or deleted from the “ends”

  6. payload payload payload payload next next next next Linked List (continued) struct listItem {type payload;struct listItem *next; }; struct listItem *head;

  7. payload payload payload payload payload next next next next next Adding an Item to a List struct listItem *p, *q; • Add an item pointed to by qafter item pointed to by p • Neither p nor q is NULL

  8. payload payload payload payload payload next next next next next Adding an Item to a List struct listItem *p, *q; • Add an item pointed to by qafter item pointed to by p • Neither p nor q is NULL

  9. payload payload payload payload payload next next next next next Adding an Item to a List listItem *addAfter(listItem *p, listItem *q){q -> next = p -> next;p -> next = q;return p; }

  10. payload payload payload payload payload next next next next next Adding an Item to a List Question: What to do if we cannotguarantee that p and q are non-NULL? listItem *addAfter(listItem *p, listItem *q){q -> next = p -> next;p -> next = q;return p; }

  11. Note test for non-null p and q payload payload payload payload payload next next next next next Adding an Item to a List (continued) listItem *addAfter(listItem *p, listItem *q){if (p && q) { q -> next = p -> next; p -> next = q;}return p; }

  12. payload payload payload payload payload next next next next next What about Adding an Itembefore another Item? struct listItem *p; • Add an item before item pointed to by p (p != NULL)

  13. What about Adding an Itembefore another Item? • Answer:– • Need to search list from beginning to find previous item • Add new item after previous item

More Related