Linked Lists Introduction Building a Linked List Traversing
















































- Slides: 48

Linked Lists Introduction Building a Linked List Traversing a Linked List Deleting a Node Dr. Hyrum D. Carroll (with some material from Dale & Weems’s Programming and Problem Solving with C++ slides)

Declarations for a Dynamic Linked List // Type declarations struct Node. Type { char info; Node. Type* link; } // Variable DECLARATIONS Node. Type* head; Node. Type* ptr; ‘A’. info 0 x 600. link

Pointer Dereferencing and Member Selection ptr ‘A’. info 0 x 600. link ptr *ptr (*ptr). info or ptr->info

ptr is a pointer to a node ptr ‘A’. info ptr 0 x 600. link

*ptr is the entire node pointed to by ptr ‘A’. info *ptr 0 x 600. link

ptr->info is a node member ptr ‘A’. info ptr->info or (*ptr). info 0 x 600 . link // Equivalent

ptr->link is a node member ptr ‘A’ . info ptr->link or (*ptr). link 0 x 600. link // Equivalent

BUILDING A LINKED LIST

Building a Linked List new. Node. Ptr head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr;

Building a Linked List new. Node. Ptr 0 x 200 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr;

Building a Linked List new. Node. Ptr 0 x 200 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘L’

Building a Linked List new. Node. Ptr 0 x 200 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 200 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 500 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 500 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘I’ 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 500 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘I’ 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 500 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘I’ 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 300 head new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr head 0 x 300 0 x 500 ‘T’ ‘I’ new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 300 head ‘T’ 0 x 500 new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘I’ 0 x 200 ‘L’ NULL

Building a Linked List new. Node. Ptr 0 x 300 head ‘T’ 0 x 500 new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘L’; new. Node. Ptr->link = NULL; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘I’; new. Node. Ptr->link = head; head = new. Node. Ptr; new. Node. Ptr = new Node. Type; new. Node. Ptr->info = ‘T’; new. Node. Ptr->link = head; head = new. Node. Ptr; ‘I’ 0 x 200 ‘L’ NULL

TRAVERSING A LINKED LIST

Traversing a Linked List ptr 0 x 300 head 0 x 300 ‘T’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 300 head 0 x 300 ‘T’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 300 head 0 x 300 ‘T’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 300 head 0 x 300 ‘T’ Output: ‘T’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 500 0 x 300 head 0 x 300 ‘T’ Output: ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 500 0 x 300 head 0 x 300 ‘T’ Output: ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 500 0 x 300 head 0 x 300 ‘T’ Output: ‘I’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 200 0 x 300 head 0 x 300 ‘T’ Output: ‘I’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 200 0 x 300 head 0 x 300 ‘T’ Output: ‘I’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr 0 x 200 0 x 300 head 0 x 300 ‘T’ Output: ‘L’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr NULL 0 x 300 head 0 x 300 ‘T’ Output: ‘L’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr NULL 0 x 300 head 0 x 300 ‘T’ Output: ‘L’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

Traversing a Linked List ptr NULL 0 x 300 head 0 x 300 ‘T’ Output: ‘L’ ptr = head; while (ptr != NULL){ cout << ptr->info; ptr = ptr->link; } 0 x 500 ‘I’ 0 x 200 ‘L’ NULL

DELETING A NODE

Deleting Node ’I’ prev curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev NULL curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev NULL curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 0 x 200 ‘I’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr 0 x 300 head 0 x 300 ‘T’ 0 x 500 0 x 200 ? // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr NULL 0 x 300 head 0 x 300 ‘T’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr NULL 0 x 300 head 0 x 300 ‘T’ 0 x 200 // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer ‘L’ NULL

Deleting Node ’I’ prev 0 x 300 curr NULL 0 x 300 head 0 x 300 ‘T’ 0 x 200 ‘L’ // find node ’I’ Node. Type *curr = head, *prev = NULL; while( curr != NULL && cur->info != ’I’){ prev = curr; curr = curr->link; } if( curr == NULL){/*’I’ not found*/ return; } prev->link = curr->link; // copy pointer to prev’s delete curr; // free up memory on the heap curr = NULL; // clean up the pointer NULL
Traversing a linked list
In linked list the successive elements
Singly vs doubly linked list
Pengertian single linked list
Concatinates
Prolog
Basic principles of traversing
Wcb
Traversing linear array algorithm
Introduction to theodolite
Engineering survey 1
Traversing trees
Temporary adjustment of theodolite
Generic linked list in c
Jenis linked list
Singly vs doubly linked list
What is polynomial addition in data structure
Market basket analysis
Xor linkedlist
Traverse a linked list c++
Linked list in mips
Definition of linked list
Linked list diagram in java
Advantages and disadvantages of circular linked list
Malloc in linked list
Circular linked list memiliki
Concurrent linked list
Prev nn artinya
Adt linked list
Difference between linked list and queue
Circular linked list advantages
Circular linked list with header node
Algorithm of linked list
Java data structures
Priority queue linked list python
Linked list diagram in java
Multi linked list java
Linked list representation of disjoint sets
Assignment operator doubly linked list c++
Quick sort on linked list
Doubly linked list visualization
Quick fit memory allocation
Lock free linked list
Deep copy doubly linked list c++
Multi linked list
Linked list pros and cons
Mips linked list
Doubly linked list python
Slidetodoc.com