w3resource

C Exercises: Convert a Singly Linked list into a string

C Singly Linked List : Exercise-11 with Solution

Write a C program to convert a Singly Linked list into a string and returns it.

Sample Solution:

C Code:

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

// Structure for a doubly linked list node
struct node {
    int num;
    struct node * preptr; // Pointer to the previous node
    struct node * nextptr; // Pointer to the next node
}*stnode, *ennode; // Pointers for the starting and ending nodes

// Function prototypes
void DlListcreation(int n);
void displayDlList();

int main() {
    int n;
    stnode = NULL; // Initializing starting node to NULL
    ennode = NULL; // Initializing ending node to NULL

    printf("\n\n Doubly Linked List : Create and display a doubly linked list :\n");
    printf("-------------------------------------------------------------------\n");

    printf(" Input the number of nodes : ");
    scanf("%d", &n);

    DlListcreation(n); // Function call to create a doubly linked list
    displayDlList(); // Function call to display the doubly linked list

    return 0;
}

// Function to create a doubly linked list
void DlListcreation(int n) {
    int i, num;
    struct node *fnNode;

    if(n >= 1) {
        stnode = (struct node *)malloc(sizeof(struct node));

        if(stnode != NULL) {
            printf(" Input data for node 1 : "); // assigning data in the first node
            scanf("%d", &num);

            stnode->num = num;
            stnode->preptr = NULL;
            stnode->nextptr = NULL;
            ennode = stnode; // Setting ending node as starting node initially

            // Loop to get input data for rest of the nodes
            for(i = 2; i <= n; i++) {
                fnNode = (struct node *)malloc(sizeof(struct node));
                if(fnNode != NULL) {
                    printf(" Input data for node %d : ", i);
                    scanf("%d", &num);
                    fnNode->num = num;
                    fnNode->preptr = ennode; // New node is linking with the previous node
                    fnNode->nextptr = NULL;

                    ennode->nextptr = fnNode; // Previous node is linking with the new node
                    ennode = fnNode; // Assign new node as last node
                } else {
                    printf(" Memory can not be allocated.");
                    break;
                }
            }
        } else {
            printf(" Memory can not be allocated.");
        }
    }
}

// Function to display the doubly linked list
void displayDlList() {
    struct node * tmp;
    int node_num = 1; // Variable to count node numbers

    if(stnode == NULL) {
        printf(" No data found in the List yet.");
    } else {
        tmp = stnode;
        printf("\n\n Data entered on the list are :\n");

        while(tmp != NULL) {
            printf(" node %d : %d\n", node_num, tmp->num);
            node_num++;
            tmp = tmp->nextptr; // Current pointer moves to the next node
        }
    }
}

Sample Output:


Linked List: Convert a Singly Linked list into a string
-------------------------------------------------------------
Input the number of nodes: 3
 Input data for node 1 : 10
 Input data for node 2 : 20
 Input data for node 3 : 30

Return data entered in the list as a string:
The linked list: 10 20 30

Flowchart :

Flowchart: Convert a Singly Linked list into a string.

C Programming Code Editor:

Previous: Search an element in a Singly Linked List.
Next: Convert a Singly Linked list into a array

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/c-programming-exercises/linked_list/c-linked_list-exercise-31.php