Week3 LinkedLists
Week3 LinkedLists
Carnegie Mellon
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 Note: elements are usually the
Singly- or doubly-linked same type (but not always).
Variations: 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
Linked List
struct listItem {
type payload;
struct listItem *next; payload
}; next
payload
next
payload
payload next
next
payload
next
payload
next payload
next
payload
next
payload
next
payload
next
payload
next payload
next
payload
next
Doubly-Linked List
struct listItem {
type payload;
listItem *prev;
listItem *next;
};
struct listItem *head, *tail;
payload payload
prev next prev next payload
payload prev next
prev next
Optional:–
Circular List struct listItem *head;
struct listItem *tail;
payload
payload
next
next
payload
payload
next
next
listItem *addToTail (listItem *p, listItem *tail){
if (p && tail) {
p -> next = tail -> next;
tail = tail -> next = p;
} else if (p) {
tail = p -> next = p;
}
return tail;
}
CS-2303, A-Term 2010 Linked Lists in C and C++ 17
Worcester Polytechnic Institute
Carnegie Mellon
Questions?