Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct NODE {
- int number;
- struct NODE *next;
- };
- int search_value(struct NODE *llist, int num);
- void append_node(struct NODE *llist, int num);
- void display_list(struct NODE *llist);
- void delete_node(struct NODE *llist, int num);
- int main(void){
- int num = 0;
- int input = 1;
- int retval = 0;
- struct NODE *llist;
- llist=(struct NODE *) malloc(sizeof(struct NODE));
- llist->number = 0;
- llist->next = NULL;
- while(input!=0){
- printf("\n-- Menu Selection --\n");
- printf("0) Quit\n");
- printf("1) Insert\n");
- printf("2) Delete\n");
- printf("3) Search\n");
- printf("4) Display\n");
- scanf("%d", &input);
- switch(input) {
- case 0:
- default:
- printf("Goodbye ...\n");
- input = 0;
- break;
- case 1:
- printf("Your choice: 'Insertion'\n");
- printf("Enter the value which should be inserted: ");
- scanf("%d", &num);
- break;
- case 2:
- printf("Your choice: 'Deletion'\n");
- printf("Enter the value which should be deleted: ");
- scanf("%d", &num);
- delete_node(llist, num);
- break;
- case 3:
- printf("Your choice: 'Search'\n");
- printf("Enter the value you want to find: ");
- scanf("%d", &num);
- if((retval = search_value(llist, num)) == -1)
- printf("Value `%d' not found\n", num);
- else
- printf("Value `%d' located at position `%d'\n", num, retval);
- break;
- case 4:
- printf("Your choice: `Display'\n");
- display_list(llist);
- break;
- }
- }
- free(llist);
- return (0);
- }
- void display_list(struct NODE *llist){
- while (llist->next != NULL){
- printf("%d", llist->number);
- llist = llist->next;
- }
- printf("%d", llist->number);
- }
- void delete_node(struct NODE *llist, int num){
- struct NODE *temp;
- temp = (struct NODE *) malloc(sizeof(struct NODE));
- if(llist->number == num){
- temp = llist->next;
- free(llist);
- } else{
- while(llist->next->number != num)
- llist = llist->next;
- temp = llist->next->next;
- free(llist->next);
- llist->next = temp;
- }
- }
- int search_value(struct NODE *llist, int num){
- int retval = -1;
- int i = 1;
- while(llist->next != NULL){
- if(llist->next->number == num)
- return i;
- else i++;
- llist = llist->next;
- }
- return retval;
- }
Advertisement
Add Comment
Please, Sign In to add comment