Untitled
unknown
plain_text
2 years ago
22 kB
9
Indexable
#include <stdio.h> #include <stdlib.h> #define MAX 100 struct stackArray { int top; int arr[MAX]; }; struct queue { int front; int rear; int arr[MAX]; }; struct linkedList { int data; struct linkedList *next; }; struct stacklist { int datasl; struct stacklist *next; }; void inputsl(struct stacklist *list); // struct stacklist *insertionsl(struct stacklist *list, int value); struct stacklist *popsl(struct stacklist *s); void linear_search(); void binary_search(); void bubble_sort(); void selection_sort(); void merge_sort(int[], int, int); void input(); void display(int[], int); void input_q(); void display_q(int[], int); void merge(int[], int, int, int); int split(int[], int, int); void quick_sort(int[], int, int); void insertion_sort(); void radix_sort(); void insertion(); void deletion(); void stack_using_array(); void stack_using_linked_list(); void single_queue(); void double_queue(); void circular_queue(); struct linkedList *insertion_at_begin(struct linkedList *, int); void insertion_at_end(); void insertion_at_position(); void deletion_at_begin(); void deletion_at_end(); void deletion_at_position(); void reversing(); int isEmpty(struct stackArray *h); int isFull(struct stackArray *head); void dequeue(struct queue *q); void displayq(struct queue *h); void single_queue(struct queue *q); // void push(struct stackArray *, int); void pop(struct stackArray *hm); void displaystack(struct stackArray *he); void stack_using_array(struct stackArray *h); int isFullq(struct queue *head); int isEmptyq(struct queue *head); void inputl(struct linkedList *q); void traversal(struct linkedList *m); void linear_search() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; int i; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } printf("Enter Element to be Searched\n"); int k, flag = 0; scanf("%d", &k); for (i = 0; i < size; i++) { if (arr[i] == k) { flag = 1; break; } } if (flag == 1) { printf("Element Found At index %d\n", i); } else { printf("Element Found\n"); } } void binary_search() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } printf("Enter Element to be Searched\n"); int k, flag = 0; int left = 0; int right = size - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == k) { printf("Element Found\n"); break; } else if (arr[mid] < k) { left = mid + 1; } else { right = mid - 1; } } printf("Element Not Found\n"); } void bubble_sort() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < size; i++) { for (int j = 0; j < size - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void selection_sort() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < size; i++) { int min = i; for (int j = i + 1; j < size; j++) { if (arr[min] > arr[j]) { min = j; } } int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void input() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } merge_sort(arr, 0, size); display(arr, size); } void merge_sort(int arr[], int left, int right) { if (left < right) { int mid = (left + right) / 2; merge_sort(arr, left, mid); merge_sort(arr, mid + 1, right); merge(arr, left, mid, right); } } void merge(int arr[], int left, int mid, int right) { int i, j, k; int n1 = mid - left + 1; int n2 = right - mid; // Create temporary arrays int L[n1], R[n2]; // Copy data to temporary arrays L[] and R[] for (i = 0; i < n1; i++) L[i] = arr[left + i]; for (j = 0; j < n2; j++) R[j] = arr[mid + 1 + j]; // Merge the temporary arrays back into arr[left..right] i = 0; // Initial index of first subarray j = 0; // Initial index of second subarray k = left; // Initial index of merged subarray while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } // Copy the remaining elements of L[], if there are any while (i < n1) { arr[k] = L[i]; i++; k++; } // Copy the remaining elements of R[], if there are any while (j < n2) { arr[k] = R[j]; j++; k++; } } void display(int arr[], int size) { printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void insertion_sort() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 1; i < size; i++) { int j = i - 1; int key = arr[i]; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void input_q() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } quick_sort(arr, 0, size - 1); display_q(arr, size); } int split(int arr[], int left, int right) { int pivotgreater = right; int pivotless = left + 1; int pivot = arr[left]; while (pivotgreater >= pivotless) { while (arr[pivotgreater] > pivot) { pivotgreater--; } while (arr[pivotless] < pivot) { pivotless++; } if (pivotgreater > pivotless) { int temp = arr[pivotgreater]; arr[pivotgreater] = arr[pivotless]; arr[pivotless] = temp; } } int temp = arr[left]; arr[left] = arr[pivotgreater]; arr[pivotgreater] = temp; return pivotgreater; } void quick_sort(int arr[], int left, int right) { if (left < right) { int i = split(arr, left, right); quick_sort(arr, left, i - 1); quick_sort(arr, i + 1, right); } } void display_q(int arr[], int size) { printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void insertion() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } printf("Enter Position\n"); int pos; scanf("%d", &pos); printf("Enter the Element\n"); int ele; scanf("%d", &ele); for (int i = size - 1; i >= pos; i--) { arr[i + 1] = arr[i]; } arr[pos] = ele; printf("After Sorting\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } printf("\n"); } void deletion() { int size; printf("Enter the Size\n"); scanf("%d", &size); int arr[size]; printf("Enter Elements\n"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } printf("Enter the Element to be deleted\n"); int del; int index; scanf("%d", &del); for (int i = 0; i < size; i++) { if (arr[i] == del) { index = i; } } for (int i = index; i < size; i++) { arr[i] = arr[i + 1]; } size--; printf("Updated Array\n"); for (int i = 0; i < size; i++) { printf("%d\t", arr[i]); } } void push(struct stackArray *hm, int value) { if (isFull(hm)) { printf("Stack Overflow\n"); return; } hm->top++; hm->arr[hm->top] = value; while (1) { printf("Do u Want To add more Elements?\n"); int chs; printf("1.Enter Elements\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n"); scanf("%d", &chs); if (chs == 1) { int es; scanf("%d", &es); hm->top++; hm->arr[hm->top] = es; } else if (chs == 2) { pop(hm); } else if (chs == 3) { displaystack(hm); } else { break; } } } void pop(struct stackArray *hm) { if (isEmpty(hm)) { printf("Stack Underflow\n"); return; } int data = hm->arr[hm->top]; hm->top--; printf("Popped element: %d\n", data); } void displaystack(struct stackArray *he) { if (isEmpty(he)) { printf("Stack Underflow\n"); return; } // printf(""); printf("Stack Elements\n\n"); for (int i = he->top; i >= 0; i--) { printf("%d\t", he->arr[i]); } printf("\n"); printf("\n"); } int isFull(struct stackArray *head) { if (head->top == MAX - 1) { return 1; } return 0; } int isEmpty(struct stackArray *head) { if (head->top == -1) { return 1; } return 0; } void stack_using_array(struct stackArray *h) { printf("1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); int chs; printf("Enter Choice\n"); scanf("%d", &chs); if (chs == 1) { int elem; printf("Enter element to push: "); scanf("%d", &elem); push(h, elem); } else if (chs == 2) { pop(h); } else if (chs == 3) { displaystack(h); } else { printf("Invalid Choice\n"); } } void traversalsl(struct stacklist *stack) { struct stacklist *temp = stack; if (temp == NULL) { printf("Stack Is Empty\n"); return; } while (temp != NULL) { printf("%d\t", temp->datasl); temp = temp->next; } printf("\n"); } void inputsl(struct stacklist *l) { printf("1.Enter Elements\n"); int e; scanf("%d", &e); l->datasl = e; struct stacklist *temp = l; struct stacklist *op; while (1) { printf("Do u want To add more elements ?\n"); printf("1.Enter Elements\n"); printf("2.POP\n"); printf("3.Display\n"); printf("3.Quit\n"); int cl; scanf("%d", &cl); if (cl == 1) { struct stacklist *second = (struct stacklist *)malloc(sizeof(struct stacklist)); int ele; scanf("%d", &ele); second->datasl = ele; second->next = NULL; // Initialize the next pointer to NULL temp->next = second; // Link the new node to the current node temp = temp->next; } else if (cl == 2) { op = popsl(l); } else if (cl == 3) { traversalsl(op); } else { break; } } } struct stacklist *popsl(struct stacklist *s) { struct stacklist *cur; struct stacklist *temp; cur = s; if (cur == NULL) { printf("Stack Is Empty\n"); return NULL; } while (cur != NULL) { if (cur->next == NULL) { int data = cur->datasl; printf("Popped Element : %d\n", data); break; } cur = cur->next; } s = cur; return s; } int isFullq(struct queue *h) { if (h->rear == MAX - 1) { return 1; } return 0; } void enqueue(struct queue *q, int value) { if (isFullq(q)) { printf("Queue is full\n"); return; } q->rear++; q->arr[q->rear] = value; while (1) { } } int isEmptyq(struct queue *h) { if (h->front == -1 && h->rear == -1) { return 1; } return 0; } void dequeue(struct queue *q) { if (isEmptyq(q)) { printf("Queue is empty\n"); return; } q->front++; int data = q->arr[q->front]; printf("Dequeued = %d\n", data); } void displayq(struct queue *h) { if (isEmptyq(h)) { printf("Queue is empty\n"); return; } for (int i = h->front; i <= h->rear; i++) { printf("%d\t", h->arr[i]); } printf("\n"); } void single_queue(struct queue *q) { printf("1.Enqueue\n"); printf("2.Dequeue\n"); printf("3.Display\n"); int ch; printf("Enter Choice\n"); scanf("%d", &ch); if (ch == 1) { int el; printf("Enter Element\n"); scanf("%d", &el); enqueue(q, el); } else if (ch == 2) { dequeue(q); } else { displayq(q); } } struct linkedList *insertion_at_begin(struct linkedList *ptr, int value) { struct linkedList *temp; temp = (struct linkedList *)malloc(sizeof(struct linkedList)); temp->next = ptr; temp->data = value; ptr = temp; return ptr; } void inputl(struct linkedList *p) { printf("1.Enter Elements\n"); int e; scanf("%d", &e); p->data = e; while (1) { printf("Do u want To add more elements ?\n"); printf("1.Enter Elements\n"); printf("2.Quit\n"); int cl; scanf("%d", &cl); if (cl == 1) { struct linkedList *second; second = (struct linkedList *)malloc(sizeof(struct linkedList)); int ele; scanf("%d", &ele); second->data = ele; p->next = second; } else { break; } } printf("Now to Insert Element At beginning\n"); printf("Enter the Element\n"); int el2; scanf("%d", &el2); struct linkedList *r = insertion_at_begin(p, el2); traversal(r); } void traversal(struct linkedList *m) { if (m == NULL) { printf("List is empty\n"); return; } while (m != NULL) { printf(" %d\t", m->data); m = m->next; } } int main() { printf("1.Searching\n"); printf("2.Sorting\n"); printf("3.Array Operation\n"); printf("4.Stack\n"); printf("5.Queue\n"); printf("6.Linked List\n"); int ch; printf("Enter Your Choice\n"); scanf("%d", &ch); struct stackArray *s; s->top = -1; struct queue *head = (struct queue *)malloc(sizeof(struct queue)); head->front = -1; head->rear = -1; struct linkedList *l; l = (struct linkedList *)malloc(sizeof(struct linkedList)); struct stacklist *sl; sl = (struct stacklist *)malloc(sizeof(struct stacklist)); switch (ch) { case 1: printf("1.Linear Search\n"); printf("1.Binary Search\n"); int ch2; printf("Enter Your Choice\n"); scanf("%d", &ch2); switch (ch2) { case 1: linear_search(); break; case 2: binary_search(); break; default: printf("Wrong Choice\n"); break; } break; case 2: { int ch3; printf("1.Bubble Sort\n"); printf("2.Selection Sort\n"); printf("3.Merge Sort\n"); printf("4.Insertion Sort\n"); printf("5.Quick Sort\n"); printf("6.Radix Sort\n"); scanf("%d", &ch3); switch (ch3) { case 1: bubble_sort(); break; case 2: selection_sort(); break; case 3: input(); // merge_sort(); // display(); break; case 4: insertion_sort(); break; case 5: input_q(); // quick_sort(); break; // case 6: // radix_sort(); // break; default: printf("Enter Correct Choice\n"); break; } break; } case 3: printf("1.Insertion\n"); printf("2.Deletion\n"); int ch4; printf("Enter Your Choice\n"); scanf("%d", &ch4); switch (ch4) { case 1: insertion(); break; case 2: deletion(); break; default: printf("Enter Correct Choice\n"); break; } break; case 4: printf("1.Stack Using Array\n"); printf("2.Stack Using Linked List\n"); int ch5; printf("Enter Your Choice\n"); scanf("%d", &ch5); switch (ch5) { case 1: stack_using_array(s); break; case 2: // stack_using_linked_list(); inputsl(sl); break; default: printf("Enter Correct Choice\n"); break; } break; case 5: printf("1.Single Ended Queue\n"); printf("2.Double Ended Queue\n"); printf("3.Circular Queue\n"); int ch6; printf("Enter Your Choice\n"); scanf("%d", &ch6); switch (ch6) { case 1: single_queue(head); break; // case 2: // double_queue(); // break; // case 3: // circular_queue(); // break; default: printf("Enter Correct Choice\n"); break; } break; case 6: printf("1.Insertion\n"); printf("2.Deletion\n"); printf("3.Reverse Linked List\n"); int ch7; printf("Enter Your Choice\n"); scanf("%d", &ch7); switch (ch7) { case 1: printf("1.Insertion At Beginning\n"); printf("2.Insertion At End\n"); printf("3.Insertion At Specific Position\n"); int ch71; scanf("%d", &ch71); printf("Enter Your Choice\n"); switch (ch71) { case 1: inputl(l); break; // case 2: // insertion_at_end(); // break; // case 3: // insertion_at_position(); // break; default: printf("Enter Correct Choice\n"); break; } break; // case 2: // printf("1.Deletion At Beginning\n"); // printf("2.Deletion At End\n"); // printf("3.Deletion At Specific Position\n"); // int ch72; // printf("Enter Your Choice\n"); // scanf("%d", &ch72); // switch (ch72) // { // case 1: // deletion_at_begin(); // break; // case 2: // deletion_at_end(); // break; // case 3: // deletion_at_position(); // break; // default: // printf("Enter Correct Choice\n"); // break; // } // break; // case 3: // reversing(); // break; // default: // printf("Enter Correct Choice\n"); // break; // } // break; default: printf("Enter Correct Choice\n"); break; } } }
Editor is loading...