C - Problem med pekare till länkade listor
Hej,
Har problem med en uppgift (ingen skoluppgift) där jag inte riktigt förstår varför det inte fungerar som jag vill. Enligt boken jag jobbar i så skriver dom att det är bra att ha en struct-pekare till början av listan som man använder sig av när man ska stega igenom den (vilket boken också använder sig av i alla exempel). Det har fungerat bra tidigare men inte nu.
Använder jag mig av
printEntries (listHeader.next);
som jag har nedan fungerar det och det skrivs ut korrekt i terminalen. Men så fort jag försöker använda min pekare istället
printEntries (listPointer);
så får jag segmenteringsfel.
Vad gör jag för fel?
PS. Anledningen till
struct entry listHeader;
är för att funktionen insertEntry ska kunna lägga till något innan första elementet i listan
// Function "insertEntry" inserts new entry to linked list
#include <stdio.h>
struct entry
{
int value;
struct entry *next;
};
// Function inserts new entry to linked list after listelement taken as argument
void insertEntry (struct entry *entryToAdd, struct entry *prevPos)
{
(*entryToAdd).next = (*prevPos).next;
(*prevPos).next = entryToAdd;
}
// Function to print a sequence of linked lists
void printEntries (struct entry *ptr)
{
while ( ptr != (struct entry *) 0 )
{
printf("%i\n", (*ptr).value);
ptr = (*ptr).next;
}
printf("\n");
}
int main (void)
{
struct entry listHeader; // Dummy entry as start of list
struct entry n1;
struct entry n2;
struct entry n3;
struct entry newEntry;
struct entry *listPointer; // Pointer to struct entry...
listPointer = listHeader.next; // ...Used as pointer to start of linked list
/* Initializing the struct entries*/
listHeader.value = 0;
listHeader.next = &n1;
n1.value = 100;
n1.next = &n2;
n2.value = 200;
n2.next = &n3;
n3.value = 400;
n3.next = 0;
newEntry.value = 50;
printEntries (listHeader.next);
insertEntry (&newEntry, &listHeader);
printEntries (listHeader.next);
return 0;
}