#include <stdio.h>
struct entry
{
int value;
struct entry *next;
};
void insertEntry ( struct entry *newEntry, struct entry *EntryNo ){
(*newEntry).next = (*EntryNo).next;
(*EntryNo).next = newEntry;
}
int main (){
struct entry n1, n2, n3, n4, newEntry;
struct entry *listPointer = &n1; // with this pointer we mark the start of the list
n1.value = 100;
n1.next = &n2;
n2.value = 200;
n2.next = &n3;
n3.value = 300;
n3.next = &n4;
n4.value = 400;
n4.next = (struct entry *) 0; // we pinpoint that n4 will be the last entry of our list
newEntry.value = 340;
printf("The list before adding a new entry:\n"); while ( listPointer != (struct entry*) 0 ){
printf("%i\n", listPointer
->value
); listPointer = listPointer->next;
}
listPointer = &n1;
insertEntry ( &newEntry, &n3 );
printf("The list after adding a new entry:\n"); while ( listPointer != (struct entry*) 0 ){
printf("%i\n", listPointer
->value
); listPointer = listPointer->next;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKc3RydWN0IGVudHJ5CnsKICAgIGludCAgdmFsdWU7CiAgICBzdHJ1Y3QgZW50cnkgKm5leHQ7Cn07CgoKdm9pZCBpbnNlcnRFbnRyeSAoIHN0cnVjdCBlbnRyeSAqbmV3RW50cnksIHN0cnVjdCBlbnRyeSAqRW50cnlObyApewoKICAgICgqbmV3RW50cnkpLm5leHQgPSAoKkVudHJ5Tm8pLm5leHQ7CiAgICAoKkVudHJ5Tm8pLm5leHQgPSBuZXdFbnRyeTsKfQoKCmludCBtYWluICgpewogICAgc3RydWN0IGVudHJ5IG4xLCBuMiwgbjMsIG40LCBuZXdFbnRyeTsKCnN0cnVjdCBlbnRyeSAqbGlzdFBvaW50ZXIgPSAmbjE7IC8vIHdpdGggdGhpcyBwb2ludGVyIHdlIG1hcmsgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0Cm4xLnZhbHVlID0gMTAwOwpuMS5uZXh0ID0gJm4yOwpuMi52YWx1ZSA9IDIwMDsKbjIubmV4dCA9ICZuMzsKbjMudmFsdWUgPSAzMDA7Cm4zLm5leHQgPSAmbjQ7Cm40LnZhbHVlID0gNDAwOwpuNC5uZXh0ID0gKHN0cnVjdCBlbnRyeSAqKSAwOyAvLyB3ZSBwaW5wb2ludCB0aGF0IG40IHdpbGwgYmUgdGhlIGxhc3QgZW50cnkgb2Ygb3VyIGxpc3QKCm5ld0VudHJ5LnZhbHVlID0gMzQwOwoKcHJpbnRmKCJUaGUgbGlzdCBiZWZvcmUgYWRkaW5nIGEgbmV3IGVudHJ5OlxuIik7CndoaWxlICggbGlzdFBvaW50ZXIgIT0gKHN0cnVjdCBlbnRyeSopIDAgKXsKICAgIHByaW50ZigiJWlcbiIsIGxpc3RQb2ludGVyLT52YWx1ZSApOwogICAgbGlzdFBvaW50ZXIgPSBsaXN0UG9pbnRlci0+bmV4dDsKfQpsaXN0UG9pbnRlciA9ICZuMTsKCmluc2VydEVudHJ5ICggJm5ld0VudHJ5LCAmbjMgKTsKCnByaW50ZigiVGhlIGxpc3QgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVudHJ5OlxuIik7CndoaWxlICggbGlzdFBvaW50ZXIgIT0gKHN0cnVjdCBlbnRyeSopIDAgKXsKICAgIHByaW50ZigiJWlcbiIsIGxpc3RQb2ludGVyLT52YWx1ZSApOwogICAgbGlzdFBvaW50ZXIgPSBsaXN0UG9pbnRlci0+bmV4dDsKfQoKcmV0dXJuIDA7Cn0=