Linked List Bubble Sort || C++

 

In this we are going to see a basic program based on Linked List Bubble Sort  in C++ Programming Language.
 


The Code given below can be used in TURBO C++ Compilers: -

#include <iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>

struct Num
{
    int n;
    struct Num *next;
};
Num *Start = NULL;
Num *Rear = NULL;

void Insert()
{
    Num *ptr = new Num;
    cout << "Enter number: ";
    cin >> ptr->n;
    ptr->next = NULL;
    if (Start == NULL)
        Start = Rear = ptr;
    else
    {
        Rear->next = ptr;
        Rear = ptr;
    }
}

Num *BSort()
{
    Num *ptr1 = new Num;
    ptr1 = Start;
    int count = 0; // to keep track of no of elements in the list
    while (ptr1 != Rear)
    {
        count++;
        ptr1 = ptr1->next;
    }

    while (count > 0)
    {
        Num *prevNode = NULL;
        Num *ptr = Start;
        while (ptr->next != NULL)
        {
            if (ptr->n >= ptr->next->n)
            {
                if (prevNode == NULL)
                {
                    // for the first Node
                    Num *nextNode = ptr->next;
                    ptr->next = nextNode->next;
                    nextNode->next = ptr;
                    prevNode = nextNode;
                    Start = prevNode;
                }
                else
                {
                    Num *nxt = ptr->next;
                    prevNode->next = nxt;
                    ptr->next = nxt->next;
                    nxt->next = ptr;
                    prevNode = nxt;
                }
            }
            else
            {
                prevNode = ptr;
                ptr = ptr->next;
            }
        }
        count--;
    }

    return Start;
}

void Display()
{
    Num *ptr = new Num;
    ptr = Start;
    while (ptr != NULL)
    {
        cout << ptr->n << "\t";
        ptr = ptr->next;
    }
}

int main()
{
    clrscr();
    cout << "Enter 10 values into the linked list:\n";
    for (int i = 0; i < 10; i++)
    {
        Insert();
    }
    Start = BSort();
    Display();
    getch();
    return 0;
}

The Code given below can be used in gcc/g++ Compilers: -

#include <iostream>
using namespace std;

struct Num
{
    int n;
    struct Num *next;
};
Num *Start = NULL;
Num *Rear = NULL;

void Insert()
{
    Num *ptr = new Num;
    cout << "Enter number: ";
    cin >> ptr->n;
    ptr->next = NULL;
    if (Start == NULL)
        Start = Rear = ptr;
    else
    {
        Rear->next = ptr;
        Rear = ptr;
    }
}

Num *BSort()
{
    Num *ptr1 = new Num;
    ptr1 = Start;
    int count = 0; // to keep track of no of elements in the list
    while (ptr1 != Rear)
    {
        count++;
        ptr1 = ptr1->next;
    }

    while (count > 0)
    {
        Num *prevNode = NULL;
        Num *ptr = Start;
        while (ptr->next != NULL)
        {
            if (ptr->n >= ptr->next->n)
            {
                if (prevNode == NULL)
                {
                    // for the first Node
                    Num *nextNode = ptr->next;
                    ptr->next = nextNode->next;
                    nextNode->next = ptr;
                    prevNode = nextNode;
                    Start = prevNode;
                }
                else
                {
                    Num *nxt = ptr->next;
                    prevNode->next = nxt;
                    ptr->next = nxt->next;
                    nxt->next = ptr;
                    prevNode = nxt;
                }
            }
            else
            {
                prevNode = ptr;
                ptr = ptr->next;
            }
        }
        count--;
    }

    return Start;
}

void Display()
{
    Num *ptr = new Num;
    ptr = Start;
    while (ptr != NULL)
    {
        cout << ptr->n << "\t";
        ptr = ptr->next;
    }
}

int main()
{
    cout << "Enter 10 values into the linked list:\n";
    for (int i = 0; i < 10; i++)
    {
        Insert();
    }
    Start = BSort();
    Display();
    return 0;
}

#ENJOY CODING

Post a Comment

FOR ANY DOUBTS AND ERRORS FEEL FREE TO ASK. YOUR DOUBTS WILL BE ADDRESSED ASAP

Previous Post Next Post