New Programs
This commit is contained in:
@@ -30,3 +30,5 @@
|
||||
|28 | LinearSearch.c | LinearSearch.exe | WAP to search an element in an array using Linear Search |
|
||||
|29 | BinarySearch.c | BinarySearch.exe | WAP to search an element in an array using Binary Search |
|
||||
|30 | SelectionSort.c | SelectionSort.exe | WAP to sort an array using selection sort |
|
||||
|31 | StackUsingLinkedList.c | StackUsingLinkedList.exe | WAP to Implement a Stack using Linked List |
|
||||
|32 | SinglyLinkedList.c | SinglyLinkedList.exe | WAP to implement singly linked lists |
|
||||
@@ -1,6 +1,6 @@
|
||||
# C Programs For Everybody To Try!
|
||||
|
||||
_`Last Updated: April 28' 2021`_
|
||||
_`Last Updated: June 11' 2021`_
|
||||
|
||||
## Introduction:
|
||||
|
||||
|
||||
54
SinglyLinkedList.c
Normal file
54
SinglyLinkedList.c
Normal file
@@ -0,0 +1,54 @@
|
||||
// WAP to implement singly linked lists
|
||||
|
||||
#include<stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
struct node {
|
||||
int data;
|
||||
struct node *next;
|
||||
};
|
||||
|
||||
struct node *head = NULL;
|
||||
struct node *current = NULL;
|
||||
|
||||
//display the list
|
||||
void printList() {
|
||||
|
||||
struct node *ptr = head;
|
||||
|
||||
printf("\n[head] =>");
|
||||
//start from the beginning
|
||||
while(ptr != NULL) {
|
||||
printf(" %d =>",ptr->data);
|
||||
ptr = ptr->next;
|
||||
}
|
||||
|
||||
printf(" [null]\n");
|
||||
}
|
||||
|
||||
//insert link at the first location
|
||||
void insert(int data) {
|
||||
//create a link
|
||||
struct node *link = (struct node*) malloc(sizeof(struct node));
|
||||
|
||||
//link->key = key;
|
||||
link->data = data;
|
||||
|
||||
//point it to old first node
|
||||
link->next = head;
|
||||
|
||||
//point first to new first node
|
||||
head = link;
|
||||
}
|
||||
|
||||
int main() {
|
||||
insert(10);
|
||||
insert(20);
|
||||
insert(30);
|
||||
insert(1);
|
||||
insert(40);
|
||||
insert(56);
|
||||
|
||||
printList();
|
||||
return 0;
|
||||
}
|
||||
BIN
SinglyLinkedList.exe
Normal file
BIN
SinglyLinkedList.exe
Normal file
Binary file not shown.
182
StackUsingLinkedList.c
Normal file
182
StackUsingLinkedList.c
Normal file
@@ -0,0 +1,182 @@
|
||||
// WAP to Implement a Stack using Linked List
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
struct node
|
||||
{
|
||||
int info;
|
||||
struct node *ptr;
|
||||
}*top,*top1,*temp;
|
||||
|
||||
int topelement();
|
||||
void push(int data);
|
||||
void pop();
|
||||
void empty();
|
||||
void display();
|
||||
void destroy();
|
||||
void stack_count();
|
||||
void create();
|
||||
|
||||
int count = 0;
|
||||
|
||||
void main()
|
||||
{
|
||||
int no, ch, e;
|
||||
|
||||
printf("\n 1 - Push");
|
||||
printf("\n 2 - Pop");
|
||||
printf("\n 3 - Top");
|
||||
printf("\n 4 - Empty");
|
||||
printf("\n 5 - Exit");
|
||||
printf("\n 6 - Dipslay");
|
||||
printf("\n 7 - Stack Count");
|
||||
printf("\n 8 - Destroy stack");
|
||||
|
||||
create();
|
||||
|
||||
while (1)
|
||||
{
|
||||
printf("\n Enter choice : ");
|
||||
scanf("%d", &ch);
|
||||
|
||||
switch (ch)
|
||||
{
|
||||
case 1:
|
||||
printf("Enter data : ");
|
||||
scanf("%d", &no);
|
||||
push(no);
|
||||
break;
|
||||
case 2:
|
||||
pop();
|
||||
break;
|
||||
case 3:
|
||||
if (top == NULL)
|
||||
printf("No elements in stack");
|
||||
else
|
||||
{
|
||||
e = topelement();
|
||||
printf("\n Top element : %d", e);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
empty();
|
||||
break;
|
||||
case 5:
|
||||
exit(0);
|
||||
case 6:
|
||||
display();
|
||||
break;
|
||||
case 7:
|
||||
stack_count();
|
||||
break;
|
||||
case 8:
|
||||
destroy();
|
||||
break;
|
||||
default :
|
||||
printf(" Wrong choice, Please enter correct choice ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Create empty stack */
|
||||
void create()
|
||||
{
|
||||
top = NULL;
|
||||
}
|
||||
|
||||
/* Count stack elements */
|
||||
void stack_count()
|
||||
{
|
||||
printf("\n No. of elements in stack : %d", count);
|
||||
}
|
||||
|
||||
/* Push data into stack */
|
||||
void push(int data)
|
||||
{
|
||||
if (top == NULL)
|
||||
{
|
||||
top =(struct node *)malloc(1*sizeof(struct node));
|
||||
top->ptr = NULL;
|
||||
top->info = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp =(struct node *)malloc(1*sizeof(struct node));
|
||||
temp->ptr = top;
|
||||
temp->info = data;
|
||||
top = temp;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
/* Display stack elements */
|
||||
void display()
|
||||
{
|
||||
top1 = top;
|
||||
|
||||
if (top1 == NULL)
|
||||
{
|
||||
printf("Stack is empty");
|
||||
return;
|
||||
}
|
||||
|
||||
while (top1 != NULL)
|
||||
{
|
||||
printf("%d ", top1->info);
|
||||
top1 = top1->ptr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pop Operation on stack */
|
||||
void pop()
|
||||
{
|
||||
top1 = top;
|
||||
|
||||
if (top1 == NULL)
|
||||
{
|
||||
printf("\n Error : Trying to pop from empty stack");
|
||||
return;
|
||||
}
|
||||
else
|
||||
top1 = top1->ptr;
|
||||
printf("\n Popped value : %d", top->info);
|
||||
free(top);
|
||||
top = top1;
|
||||
count--;
|
||||
}
|
||||
|
||||
/* Return top element */
|
||||
int topelement()
|
||||
{
|
||||
return(top->info);
|
||||
}
|
||||
|
||||
/* Check if stack is empty or not */
|
||||
void empty()
|
||||
{
|
||||
if (top == NULL)
|
||||
printf("\n Stack is empty");
|
||||
else
|
||||
printf("\n Stack is not empty with %d elements", count);
|
||||
}
|
||||
|
||||
/* Destroy entire stack */
|
||||
void destroy()
|
||||
{
|
||||
top1 = top;
|
||||
|
||||
while (top1 != NULL)
|
||||
{
|
||||
top1 = top->ptr;
|
||||
free(top);
|
||||
top = top1;
|
||||
top1 = top1->ptr;
|
||||
}
|
||||
free(top1);
|
||||
top = NULL;
|
||||
|
||||
printf("\n All stack elements destroyed");
|
||||
count = 0;
|
||||
}
|
||||
BIN
StackUsingLinkedList.exe
Normal file
BIN
StackUsingLinkedList.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user