Working with Pointers and Structures 249Inserting an element into a list is just as straightforward. If you want to insert a struct
entrycalled n2_3after n2in the list, you can simply set n2_3.nextto point to whatever
n2.nextwas pointing to, and then set n2.nextto point to n2_3.So, the sequence of
statements
n2_3.next = n2.next;
n2.next = &n2_3;
inserts n2_3into the list, immediately after entry n2. Note that the sequence of the pre-
ceding statements is important because executing the second statement first overwrites
the pointer stored in n2.nextbefore it has a chance to be assigned to n2_3.next.The
inserted element n2_3is depicted in Figure 11.7. Notice that n2_3is not shown
between n1and n3.This is to emphasize that n2_3can be anywhere in memory and
does not have to physically occur after n1and before n3.This is one of the main motiva-
tions for the use of a linked list approach for storing information: Entries of the list do
not have to be stored sequentially in memory, as is the case with elements in an array.
n1value
nextn2value
nextn3value
nextn2_3value
nextFigure 11.7 Inserting an element into a linked list.