From 8b2049125c26a6f382ad8263c409b297b51b53a7 Mon Sep 17 00:00:00 2001
From: Prayas Jain
Date: Tue, 2 Oct 2018 16:59:25 +0530
Subject: [PATCH 1/3] implement binary and linear search in c
---
Search/C/binary.c | 36 ++++++++++++++++++++++++++++++++++++
Search/C/linear.c | 26 ++++++++++++++++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 Search/C/binary.c
create mode 100644 Search/C/linear.c
diff --git a/Search/C/binary.c b/Search/C/binary.c
new file mode 100644
index 0000000..badbcd0
--- /dev/null
+++ b/Search/C/binary.c
@@ -0,0 +1,36 @@
+#include
+
+int main()
+{
+ int location, first, last, middle,size, search, array[100];
+
+ printf("Enter number of elements: \n");
+ scanf("%d",&size);
+
+ printf("Enter %d integers: \n", size);
+
+ for (location = 0; location < size; location++)
+ scanf("%d",&array[location]);
+
+ printf("Enter value to find: \n");
+ scanf("%d", &search);
+
+ first = 0;
+ last = size - 1;
+ middle = (first+last)/2;
+
+ while (first <= last) {
+ if (array[middle] < search)
+ first = middle + 1;
+ else if (array[middle] == search) {
+ printf("%d found at location: %d.\n", search, middle+1);
+ break;
+ }
+ else
+ last = middle - 1;
+
+ middle = (first + last)/2;
+ }
+ if (first > last)
+ printf("The number is not in the list.\n");
+}
\ No newline at end of file
diff --git a/Search/C/linear.c b/Search/C/linear.c
new file mode 100644
index 0000000..739f889
--- /dev/null
+++ b/Search/C/linear.c
@@ -0,0 +1,26 @@
+#include
+void main(){
+
+ int input[10],location,size,search,c=0;
+
+ printf("Enter the size of an array: ");
+ scanf("%d",&size);
+
+ printf("Enter the elements of the array: ");
+ for(location=0;location<=size-1;location++){
+ scanf("%d",&input[location]);
+ }
+
+ printf("Enter the number to be search: ");
+ scanf("%d",&search);
+ for(location=0;location<=size-1;location++){
+ if(input[location]==search){
+ c=1;
+ break;
+ }
+ }
+ if(c==0)
+ printf("The number is not in the list \n");
+ else
+ printf("The number is found at location %d \n",location+1);
+}
\ No newline at end of file
From 48d8b102d10eb45c174f8f08f28b1d85f2afae77 Mon Sep 17 00:00:00 2001
From: Prayas Jain
Date: Tue, 2 Oct 2018 17:01:56 +0530
Subject: [PATCH 2/3] implement bubble sort in c
---
Sort/C/bubble.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 Sort/C/bubble.c
diff --git a/Sort/C/bubble.c b/Sort/C/bubble.c
new file mode 100644
index 0000000..138cf5a
--- /dev/null
+++ b/Sort/C/bubble.c
@@ -0,0 +1,25 @@
+#include
+
+int main() {
+
+ int i, j, Temp, List[] = {6, 3, 0, 4, 8, 2, 5, 0, 1, 7};
+
+ printf("List Before Sorting :\n");
+ for (j = 0; j < 10; j++) {
+ printf("%d ", List[j]);
+ }
+ for (i = 0; i < 10; i++) {
+ for (j = 0; j <= i; j++) {
+ if (List[j] > List[i]) {
+ Temp = List[i];
+ List[i] = List[j];
+ List[j] = Temp;
+ }
+ }
+ }
+ printf("\nList Before Sorting :\n");
+ for (j = 0; j < 10; j++) {
+ printf("%d ", List[j]);
+ }
+ printf ("\n");
+}
From fe00e0ff47ccde6ef53ab8a3e79bbc8e4e7b6e2a Mon Sep 17 00:00:00 2001
From: Prayas Jain
Date: Tue, 2 Oct 2018 17:32:51 +0530
Subject: [PATCH 3/3] implement single linkedList and double linkedList in C
---
Data_Structures/linkedList/LinkedList.c | 212 ++++++++++++++++++
Data_Structures/linkedList/doubleLinkedList.c | 209 +++++++++++++++++
2 files changed, 421 insertions(+)
create mode 100644 Data_Structures/linkedList/LinkedList.c
create mode 100644 Data_Structures/linkedList/doubleLinkedList.c
diff --git a/Data_Structures/linkedList/LinkedList.c b/Data_Structures/linkedList/LinkedList.c
new file mode 100644
index 0000000..900d10a
--- /dev/null
+++ b/Data_Structures/linkedList/LinkedList.c
@@ -0,0 +1,212 @@
+#include
+#include
+
+struct Node
+{
+ int data;
+ struct Node *next;
+}*head = NULL;
+
+void insertAtBeginning(int value)
+{
+ struct Node *newNode;
+ newNode = (struct Node*)malloc(sizeof(struct Node));
+ newNode->data = value;
+ if(head == NULL)
+ {
+ newNode->next = NULL;
+ head = newNode;
+ }
+ else
+ {
+ newNode->next = head;
+ head = newNode;
+ }
+ printf("\nOne node inserted!!!\n");
+}
+void insertAtEnd(int value) {
+ struct Node *newNode;
+ newNode = (struct Node*)malloc(sizeof(struct Node));
+ newNode->data = value;
+ newNode->next = NULL;
+ if(head == NULL)
+ head = newNode;
+ else
+ {
+ struct Node *temp = head;
+ while(temp->next != NULL)
+ temp = temp->next;
+ temp->next = newNode;
+ }
+ printf("\nOne node inserted!!!\n");
+}
+void insertBetween(int value, int loc1) {
+ struct Node *temp;
+ struct Node *allocate;
+ allocate = (struct Node*)malloc(sizeof(struct Node));
+ allocate->data = value;
+ if(head == NULL)
+ {
+ allocate->next = head;
+ head = allocate;
+ }
+ else
+ temp = head;
+ {
+ for (int i = 0; i < loc1-2; i++)
+ {
+ temp = temp->next;
+ }
+ allocate->next = temp->next;
+ temp->next = allocate;
+ }
+ printf("\nOne node inserted!!!\n");
+}
+
+void removeBeginning() {
+ if(head == NULL)
+ printf("\n\nList is Empty!!!");
+ else
+ {
+ struct Node *temp = head;
+ if(head->next == NULL)
+ {
+ head = NULL;
+ free(temp);
+ }
+ else
+ {
+ head = temp->next;
+ free(temp);
+ printf("\nOne node deleted!!!\n\n");
+ }
+ }
+}
+void removeEnd(){
+ if(head == NULL)
+ {
+ printf("\nList is Empty!!!\n");
+ }
+ else
+ {
+ struct Node *temp1 = head,*temp2;
+ if(head->next == NULL)
+ head = NULL;
+ else
+ {
+ while(temp1->next != NULL)
+ {
+ temp2 = temp1;
+ temp1 = temp1->next;
+ }
+ temp2->next = NULL;
+ }
+ free(temp1);
+ printf("\nOne node deleted!!!\n\n");
+ }
+}
+void removeSpecific(int delValue) {
+ struct Node *temp1 = head, *temp2;
+ while(temp1->data != delValue)
+ {
+ if(temp1 -> next == NULL){
+ printf("\nGiven node not found in the list!!!");
+ }
+ temp2 = temp1;
+ temp1 = temp1 -> next;
+ }
+ temp2 -> next = temp1 -> next;
+ free(temp1);
+ printf("\nOne node deleted!!!\n\n");
+}
+
+void display() {
+ if(head == NULL)
+ {
+ printf("\nList is Empty\n");
+ }
+ else
+ {
+ struct Node *temp = head;
+ printf("\n\nList elements are - \n");
+ while(temp->next != NULL)
+ {
+ printf("%d --->",temp->data);
+ temp = temp->next;
+ }
+ printf("%d --->NULL",temp->data);
+ }
+
+}
+
+void reverse(){
+ struct Node *p1,*p2,*p3,*ptr;
+ p1=head;
+ p2=p1->next;
+ p3=p2->next;
+ p1->next=NULL;
+ p2->next=p1;
+ while(p3!=NULL){
+ p1=p2;
+ p2=p3;
+ p3=p3->next;
+ p2->next=p1;
+ }
+ head=p2;
+ display();
+}
+
+void main() {
+ int choice,value,choice1,loc1,loc2;
+ while(1){
+ printf("\n\nThis is created by Prayas Jain of CSE3 (LE)\n");
+ mainMenu: printf("****** MENU ******\n1. Insert\n2. Display\n3. Delete\n4. Reverse\n5. Exit\nEnter your choice: ");
+ scanf("%d",&choice);
+ switch(choice)
+ {
+ case 1: printf("Enter the value to be insert: ");
+ scanf("%d",&value);
+ while(1){
+ printf("Where you want to insert: \n1. At Beginning\n2. At End\n3. Between\nEnter your choice: ");
+ scanf("%d",&choice1);
+ switch(choice1)
+ {
+ case 1: insertAtBeginning(value);
+ break;
+ case 2: insertAtEnd(value);
+ break;
+ case 3: printf("Enter the location where you wanto insert: ");
+ scanf("%d",&loc1);
+ insertBetween(value,loc1);
+ break;
+ default: printf("\nWrong Input!! Try again!!!\n\n");
+ }
+ goto subMenuEnd;
+ }
+ subMenuEnd:
+ case 2: display();
+ break;
+ case 3: printf("How do you want to Delete: \n1. From Beginning\n2. From End\n3. Spesific\nEnter your choice: ");
+ scanf("%d",&choice1);
+ switch(choice1)
+ {
+ case 1: removeBeginning();
+ break;
+ case 2: removeEnd(value);
+ break;
+ case 3: printf("Enter the value which you want to delete: ");
+ scanf("%d",&loc2);
+ removeSpecific(loc2);
+ break;
+ default: printf("\nWrong Input!! Try again!!!\n\n");
+ goto mainMenu;
+ }
+ break;
+ case 4:
+ reverse();
+ goto mainMenu;
+ case 5: exit(0);
+ default: printf("\nWrong input!!! Try again!!\n\n");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Data_Structures/linkedList/doubleLinkedList.c b/Data_Structures/linkedList/doubleLinkedList.c
new file mode 100644
index 0000000..003168d
--- /dev/null
+++ b/Data_Structures/linkedList/doubleLinkedList.c
@@ -0,0 +1,209 @@
+#include
+#include
+
+struct Node {
+ struct Node *prev;
+ int value;
+ struct Node *next;
+}*head = NULL, *tail = NULL;
+
+void insertionAtBegining(int data) {
+ struct Node *current = head;
+ struct Node *newNode;
+ newNode = (struct Node*)malloc(sizeof(struct Node));
+ newNode-> value = data;
+ if (current == NULL){
+ newNode->prev = NULL;
+ newNode->next = NULL;
+ head = newNode;
+ tail = newNode;
+ }else{
+ newNode->prev = NULL;
+ newNode-> next = head;
+ head->prev = newNode;
+ head = newNode;
+ }
+}
+
+void insertionAtTail(int data){
+ struct Node *current = head;
+ struct Node *newNode;
+ newNode = (struct Node*)malloc(sizeof(struct Node));
+ newNode-> value = data;
+ if (current == NULL){
+ newNode->prev = NULL;
+ newNode->next = NULL;
+ head = newNode;
+ tail = newNode;
+ }while(current->next != NULL){
+ current = current->next;
+ }
+ current->next = newNode;
+ newNode->prev = current;
+ newNode->next = NULL;
+ tail = newNode;
+}
+
+void insertBetween(int data, int location){
+ struct Node *current = head;
+ struct Node *newNode;
+ newNode = (struct Node*)malloc(sizeof(struct Node));
+ newNode-> value = data;
+ if (current == NULL){
+ newNode->prev = NULL;
+ newNode->next = NULL;
+ head = newNode;
+ tail = newNode;
+ }else{
+ struct Node *previousNode;
+ int i=1;
+ while (inext;
+ i++;
+ }
+ newNode->next = current->next;
+ newNode->prev = current;
+ if (current->next != NULL){
+ current->next->prev = newNode;
+ }
+ current->next = newNode;
+ }
+}
+
+void deltionAtBegining(){
+ if(head == NULL && tail == NULL){
+ printf("LIST IS EMPTY");
+ }
+ struct Node *current = head;
+ head = current->next;
+ current->next->prev = NULL;
+ free(current);
+}
+
+void deletionAtTail(){
+ if(head == NULL && tail == NULL){
+ printf("LIST IS EMPTY");
+ }else if(head == tail){
+ free(head);
+ head = NULL;
+ tail = NULL;
+ }
+ else{
+ struct Node *current = head;
+ while(current->next != NULL){
+ current = current->next;
+ }
+ current->prev->next = NULL;
+ tail = current->prev;
+ free(current);
+ }
+
+
+}
+
+void deleteSpecific(int position){
+ struct Node *current = head;
+ if(head == NULL && tail == NULL){
+ printf("LIST IS EMPTY");
+ }else{
+ for(int i=1; inext;
+ }
+ current->prev->next = current->next;
+ current->next->prev = current->prev;
+ free(current);
+ }
+
+}
+void printList(){
+ struct Node *current = head;
+ printf("head--> %p \n",head);
+ while (current != NULL ){
+ printf("%p --->",current->prev);
+ printf("%d --->",current->value);
+ printf("%p ",current->next);
+ printf("\n");
+ current = current->next;
+ }
+ printf("tail--> %p\n", tail);
+}
+
+void display(){
+ struct Node *current = head;
+ printf("head--> %d \n",head->value);
+ while (current != NULL ){
+ printf("%d <--->",current->value);
+ current = current->next;
+ }
+ printf("NULL\n");
+ printf("tail--> %d\n", tail->value);
+}
+void reverse(){
+ struct Node *temp;
+ struct Node *current = head;
+ while(current != NULL){
+ temp = current->next;
+ current->next = current->prev;
+ current->prev = temp;
+ current= temp;
+ }
+ temp = head;
+ head = tail;
+ tail=temp;
+}
+
+void main(){
+ int choice,value,choice1,loc1,loc2;
+ while(1){
+ printf("\n\nThis is created by Prayas Jain of CSE3 (LE)\n");
+ mainMenu: printf("****** MENU ******\n1. Insert\n2. Display\n3. Delete\n4. Reverse\n5. Exit\nEnter your choice: ");
+ scanf("%d",&choice);
+ switch(choice)
+ {
+ case 1: printf("Enter the value to be insert: ");
+ scanf("%d",&value);
+ while(1){
+ printf("Where you want to insert: \n1. At Beginning\n2. At End\n3. Between\nEnter your choice: ");
+ scanf("%d",&choice1);
+ switch(choice1)
+ {
+ case 1: insertionAtBegining(value);
+ break;
+ case 2: insertionAtTail(value);
+ break;
+ case 3: printf("Enter the location where you wanto insert: ");
+ scanf("%d",&loc1);
+ insertBetween(value,loc1);
+ break;
+ default: printf("\nWrong Input!! Try again!!!\n\n");
+ }
+ goto subMenuEnd;
+ }
+ subMenuEnd:
+ case 2: display();
+ break;
+ case 3: printf("How do you want to Delete: \n1. From Beginning\n2. From End\n3. Specific\nEnter your choice: ");
+ scanf("%d",&choice1);
+ switch(choice1)
+ {
+ case 1: deltionAtBegining();
+ break;
+ case 2: deletionAtTail(value);
+ break;
+ case 3: printf("Enter the value which you want to delete: ");
+ scanf("%d",&loc2);
+ deleteSpecific(loc2);
+ break;
+ default: printf("\nWrong Input!! Try again!!!\n\n");
+ goto mainMenu;
+ }
+ break;
+ case 4:
+ reverse();
+ display();
+ goto mainMenu;
+ case 5: exit(0);
+ default: printf("\nWrong input!!! Try again!!\n\n");
+ }
+ }
+}
\ No newline at end of file