2022-11-16

How do I print all the nodes in a linked list?

I am trying to teach myself linked lists, so I have managed to put together a small piece of code that should create three linked nodes and then print them out. Except it only prints out the first element, and I don't understand why not the other two.

Also, I am pretty sure I am supposed to free memory when I use malloc? but I don't know where?

Anyway, what am I doing wrong?? here is the code...

I know that there are similar answers out there, but I have checked them out, and would prefer an answer to my specific situation, because I wouldn't get it otherwise...

#include<stdio.h>
#include <stdlib.h>

struct Node 
{
    int data;
    struct Node *next;
};

void printList(struct Node *ptr);

int main(void)
{
    struct Node* head = NULL;
    struct Node* second = NULL;
    struct Node* third = NULL;

    head = (struct Node*)malloc(sizeof(struct Node));
    second = (struct Node*)malloc(sizeof(struct Node));
    third = (struct Node*)malloc(sizeof(struct Node));

    head->data = 10;
    head->next = second;

    second->data = 20;
    head->next = third;

    third->data = 30;
    head->next = NULL;
    
    printList(head);
}

void printList(struct Node *ptr)
{
    struct Node *listPtr;
    listPtr = ptr;
    int count = 1;
    if (listPtr == NULL)
    {
        printf("No elements in list.\n");
        return;
    }  
    while (listPtr!=NULL)
    {
        printf("element %d = %d\n",count,listPtr->data);
        listPtr = listPtr->next;
        count++;
    }
}

I have looked into similar code examples, and they (at least a couple of them), look similar to mine, so I don't really know what I am doing wrong...



No comments:

Post a Comment