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