Cn anybody give me a program about adding nodes at the end of the list in C?

I just need a basis of a program that I will be creating. I also needed its algorithm. Thanks in advance.

Edited 6 Years Ago by bflack: n/a

Taking the list to be a singly ended.
1. Locate End Pointer (endPtr)
2. Create a new node (newPtr)
3. Initialize new node
4. Assign the link part of endPtr the address of newPtr
5. Make newPtr as new endPtr

Your question is incomplete. What list? What type? There are many types of lists.

What I mean is about SINGLY LINKED LIST in C programming.

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

struct node
{
    int num;
    struct node *next;
}               ;
typedef struct node nd;


main()
{
    int i, x;
    nd *head=NULL, *ptr;
    clrscr();
    head=malloc(sizeof(nd));
    ptr=head;
    printf("Enter numbers: ");
    for(i=0; i<5; i++)
    {
        scanf("%d", &x);
        while(ptr->next!=NULL)
        {
            ptr=ptr->next;
        }
        ptr->num=x;
        ptr->next=NULL;
    }

    ptr=head;
    printf("\n\nValues: ");
        for(i=0; i<5; i++)
    {
        if(ptr!=NULL)
        {
            printf("\n%d", ptr->num);
        }
    }

    getch;
}

Theres a logical error here but i can't find what it is. The problem is the output goes wrong when I print it. Cn anybody debug this program for me? pls

Edited 3 Years Ago by Dani: Formatting fixed

while(ptr->next!=NULL)
{
   ptr=ptr->next;
}

ptr->next is uninitialized before this loop, so its never NULL, so it will run forever, since next contains garbage and will never be NULL.

I've modified that part and changed it to


while(ptr!=NULL)
{
ptr=ptr->next;
}

but still it doesn't print the right output?

Edited 6 Years Ago by bflack: n/a

Because you are initializing memory only once.Initialize memory whenever you add a new element.So dont initialize for the head in the start.Initialize memory after the while loop and also you can initialize the value at the same time.

This article has been dead for over six months. Start a new discussion instead.