// C program to implement Bubble Sort on singly linked list
#include <stdio.h>
#include <stdlib.h>
/* structure for a node */
struct Node
{
int data;
struct Node *next;
};
/* Function to insert a node at the beginning of a linked list */
void insertAtTheBegin(struct Node **start_ref, int data);
/* Function to bubble sort the given linked list */
void bubbleSort(struct Node *start);
/* Function to swap data of two nodes a and b*/
void swap(struct Node *a, struct Node *b);
/* Function to print nodes in a given linked list */
void printList(struct Node *start);
int main()
{
int arr[] = {12, 56, 2, 11, 1, 90};
int list_size, i;
/* start with empty linked list */
struct Node *start = NULL;
/* Create linked list from the array arr[].
Created linked list will be 1->11->2->56->12 */
for (i = 0; i< 6; i++)
insertAtTheBegin(&start, arr[i]);
/* print list before sorting */
printf("
Linked list before sorting ");
printList(start);
/* sort the linked list */
bubbleSort(start);
/* print list after sorting */
printf("
Linked list after sorting ");
printList(start);
getchar();
return 0;
}
/* Function to insert a node at the beginning of a linked list */
void insertAtTheBegin(struct Node **start_ref, int data)
{
struct Node *ptr1 = (struct Node*)malloc(sizeof(struct Node));
ptr1->data = data;
ptr1->next = *start_ref;
*start_ref = ptr1;
}
/* Function to print nodes in a given linked list */
void printList(struct Node *start)
{
struct Node *temp = start;
printf("
");
while (temp!=NULL)
{
printf("%d ", temp->data);
temp = temp->next;
}
}
/* Bubble sort the given linked list */
void bubbleSort(struct Node *start)
{
int swapped, i;
struct Node *ptr1;
struct Node *lptr = NULL;
/* Checking for empty list */
if (start == NULL)
return;
do
{
swapped = 0;
ptr1 = start;
while (ptr1->next != lptr)
{
if (ptr1->data > ptr1->next->data)
{
swap(ptr1, ptr1->next);
swapped = 1;
}
ptr1 = ptr1->next;
}
lptr = ptr1;
}
while (swapped);
}
/* function to swap data of two nodes a and b*/
void swap(struct Node *a, struct Node *b)
{
int temp = a->data;
a->data = b->data;
b->data = temp;
}
Code Example |
---|
C :: remove on condtion in vec rust |
C :: how to print hello world in c |
C :: how to prevent user from entering char when needing int in c |
C :: c print size_t |
C :: send http request in C |
C :: Creating a process in C |
C :: boilerplate code c |
C :: addition of two matrix in c |
C :: Successeur récurssive |
C :: factorial in c using recursion |
C :: dynamically create matrix c |
C :: A binary tree whose every node has either zero or two children is called |
C :: c integer to string |
C :: matplotlib plot circle marker |
C :: stdio.h in c |
C :: string input c |
C :: how make a character in c scanf |
C :: c for loop |
C :: space x |
C :: format specifiers in c |
C :: c read file |
C :: fwrite in c |
C :: c loop |
C :: sort names in array in c |
C :: getchar in c |
C :: c language float user input |
C :: create point cloud from rgbd image in open3d v0.10 |
C :: text to hex in C |
C :: define constant c |
C :: check command line input is a number in c |