Skip to content

Commit

Permalink
Prasad sarwar (#305)
Browse files Browse the repository at this point in the history
* Added singly linked list operations with insert, delete, count, and display functions.

* Added singly circular linked list operations with insert, delete, count, and display functions.

* Added doubly linear linked list operations with insert, delete, count, and display functions.

* Added doubly Circular linked list operations with insert, delete, count, and display functions.

* contains Linear and binary search algorithms

* Program to sort elements of linkedlist using bubble sort

* Program to sort elements of linkedlist using selection sort

* Program to sort elements of linkedlist using Insertion sort

* Program to sort elements of linkedlist using Insertion sort

* Program to reverse linked list

* Program to check wether linked list contains loop
  • Loading branch information
prasadsarwar authored Oct 4, 2024
1 parent d95d4f8 commit 798a7f1
Show file tree
Hide file tree
Showing 10 changed files with 1,835 additions and 0 deletions.
115 changes: 115 additions & 0 deletions C/Bubble_Sort_Linkedlist.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#pragma pack(1)

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

typedef struct node NODE;
typedef struct node * PNODE;
typedef struct node ** PPNODE;

void Display(PNODE First)
{
printf("Elements in Linked list are:\n");

while(First != NULL)
{
printf("| %d | -> ", First->iData);
First = First->next;
}
printf("NULL\n");
}

void InsertLast(PPNODE First, int iNo)
{
PNODE Temp = *First;
PNODE newn = (PNODE)malloc(sizeof(NODE));
newn->iData = iNo;
newn->next = NULL;

if(*First == NULL)
{
*First = newn;
}
else
{
while(Temp->next != NULL)
{
Temp = Temp->next;
}
Temp->next = newn;
}
}

// Function to count the number of nodes in the linked list
int CountNodes(PNODE First)
{
int iCnt = 0;
while (First != NULL)
{
iCnt++;
First = First->next;
}
return iCnt;
}

// Bubble sort function to sort the linked list
void BubbleSort(PPNODE First)
{
int i, j, iCnt;
PNODE Temp = NULL;
PNODE Current = NULL;
int tempData;

iCnt = CountNodes(*First);

// Perform the Bubble Sort
for(i = 0; i < iCnt - 1; i++)
{
Current = *First;
for(j = 0; j < iCnt - i - 1; j++)
{
if(Current->iData > Current->next->iData) // Swap if elements are in wrong order
{
// Swap the data
tempData = Current->iData;
Current->iData = Current->next->iData;
Current->next->iData = tempData;
}
Current = Current->next;
}
}
}

int main()
{
PNODE Head = NULL;
int iRet = 0;

// Inserting elements in sorted order
InsertLast(&Head, 121);
InsertLast(&Head, 131);
InsertLast(&Head, 181);
InsertLast(&Head, 116);
InsertLast(&Head, 141);
InsertLast(&Head, 171);
InsertLast(&Head, 151);
InsertLast(&Head, 161);
InsertLast(&Head, 111);

printf("Before Sorting:\n");
Display(Head);

BubbleSort(&Head);

printf("\nAfter Sorting:\n");
Display(Head);

return 0;
}
100 changes: 100 additions & 0 deletions C/Check_Loop_In_Linkedlist.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#pragma pack(1)

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

typedef struct node NODE;
typedef struct node * PNODE;
typedef struct node ** PPNODE;

void Display(PNODE First)
{
printf("Elements in Linked list are:\n");

while(First != NULL)
{
printf("| %d | -> ", First->iData);
First = First->next;
}
printf("NULL\n");
}

void InsertLast(PPNODE First, int iNo)
{
PNODE Temp = *First;
PNODE newn = (PNODE)malloc(sizeof(NODE));
newn->iData = iNo;
newn->next = NULL;

if(*First == NULL)
{
*First = newn;
}
else
{
while(Temp->next != NULL)
{
Temp = Temp->next;
}
Temp->next = newn;
}
}
bool LoopCheck(PNODE First)
{
PNODE Student = First;
PNODE Teacher = First;
bool flag = false;

while((Teacher != NULL) && (Teacher->next != NULL))
{
Student = Student -> next;
Teacher = Teacher->next->next;

if(Student == Teacher)
{
flag = true;
break;
}
}

return flag;
}

int main()
{
PNODE Head = NULL;
bool bRet = 0;

// Inserting elements in sorted order
InsertLast(&Head, 121);
InsertLast(&Head, 131);
InsertLast(&Head, 181);
InsertLast(&Head, 116);
InsertLast(&Head, 141);
InsertLast(&Head, 171);
InsertLast(&Head, 151);
InsertLast(&Head, 161);
InsertLast(&Head, 111);

Display(Head);

bRet = LoopCheck(Head);

if(bRet == true)
{
printf("There is loop\n");
}
else
{
printf("There is no loop\n");
}

return 0;
}
Loading

0 comments on commit 798a7f1

Please sign in to comment.