简体   繁体   中英

Code to insert node at last position in C programming language

I am writing a code on linklist in C programming language. When I am using an online compiler my code is working fine but when I am using Codeblock to run the code, the code is not working. I am posting the code kindly provide me solution. My code is to add node in a linklist on the last position.

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

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

struct Node* Head;
void insert(int);
void print();

int main()
{
    Head = NULL;

    insert(2);
    insert(3);
    insert(4);

    print();

    return 0;
}

void insert(int a)
{
    struct Node* temp1=(struct Node*)malloc(sizeof(struct Node));

    temp1-> data = a;
    temp1-> next = NULL;

    if(Head == NULL)
    {
        Head = temp1;
        return;
    }

    struct Node* temp = Head;

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

    temp-> next = temp1;
}


void print()
{
    struct Node* temp2=Head;

    while(temp2 != NULL)
    {

        printf("%d \n", temp2->data);
        temp2 = temp2->next;
    }

    return;

}

Here is how you can achieve what you want to do.

I suggest you to use a top-down approach when programming.

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

struct node
{
    int info;
    struct node *next;
};

struct node *Insert(struct node *, int);
void Print_List(struct node *);
void Remove_List(struct node *);

int main(int argc, char **argv)
{
    struct node *head;

    head = NULL;

    head = Insert(head, 10);
    head = Insert(head, 20);

    Print_List(head);

    Remove_List(head);

    head = NULL;

    return 0;
}

struct node *Create_New_Node(int);
struct node *Head_Insert(struct node *, int);
struct node *Queue_Insert(struct node *, int);
struct node *Insert(struct node *, int);
void Print_List(struct node *);
void Remove_List(struct node *);

struct node *Insert(struct node *top, int elem)
{
    if(top == NULL)
    {
        top = Head_Insert(top, elem);
    }
    else
    {
        top = Queue_Insert(top, elem);
    }

    return top;
}

struct node *Create_New_Node(int elem)
{
    struct node *new_node;

    new_node = (struct node *)malloc(sizeof(struct node));

    if(new_node != NULL)
    {
        new_node -> info = elem;
        new_node -> next = NULL;
    }

    return new_node;
}


struct node *Head_Insert(struct node *top, int elem)
{
    struct node *new_node = Create_New_Node(elem);

    if(new_node != NULL)
    {
        new_node -> next = top;
    }

    return new_node;
}

struct node *Queue_Insert(struct node *top, int elem)
{
    if(top != NULL)
    {
        if(top -> next != NULL)
        {
            top -> next = Queue_Insert(top -> next, elem);
        }
        else
        {
            struct node *new_node = Create_New_Node(elem);

            if(new_node != NULL)
            {
                 top -> next = new_node;
            }
        }
    }

    return top;
}

void Print_List(struct node *top)
{
    while(top != NULL)
    {
        printf("\nInfo : %d\tAddress : %u\tNext link address : %u\n", top -> info, top, top -> next);
        top = top -> next;
    }

    return;
}

void Remove_List(struct node *top)
{
    if(top != NULL)
    {
        Remove_List(top -> next);
        top -> next = NULL;
        free(top);
    }

    return;
}

Sample output :

Info : 10 Address : 39149584 Next link address : 39149616

Info : 20 Address : 39149616 Next link address : 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM