rony-Rony_05

Untitled

Sep 29th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.84 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct linked_list
  5. {
  6.     int number;
  7.     struct linked_list *next;
  8. };
  9.  
  10. typedef struct linked_list node;
  11. node *head=NULL, *last=NULL;
  12.  
  13. void create_linked_list();
  14. void print_linked_list();
  15. void insert_at_last(int value);
  16. void insert_at_first(int value);
  17. void insert_after(int key, int value);
  18. void delete_item(int value);
  19. void search_item(int value);
  20.  
  21. int main()
  22. {
  23.     int key, value;
  24.     printf("Create Linked List\n");
  25.     create_linked_list();
  26.     print_linked_list();
  27.     printf("\nInsert new item at last\n");
  28.     scanf("%d", &value);
  29.     insert_at_last(value);
  30.     print_linked_list();
  31.     printf("\nInsert new item at first\n");
  32.     scanf("%d", &value);
  33.     insert_at_first(value);
  34.     print_linked_list();
  35.     printf("\nEnter a KEY (existing item of List), after that you want to insert a value\n");
  36.     scanf("%d", &key);
  37.     printf("\nInsert new item after %d KEY\n", key);
  38.     scanf("%d", &value);
  39.     insert_after(key, value);
  40.     print_linked_list();
  41.     printf("\nEnter an item to search it from List\n");
  42.     scanf("%d", &value);
  43.     search_item(value);
  44.     printf("\nEnter a value, which you want to delete from list\n");
  45.     scanf("%d", &value);
  46.     delete_item(value);
  47.     print_linked_list();
  48.     return 0;
  49. }
  50. void create_linked_list()
  51. {
  52.     int val;
  53.     while(1)
  54.     {
  55.         printf("Input a number. (Enter -1 to exit)\n");
  56.  
  57.         scanf("%d", &val);
  58.  
  59.         if(val==-1)
  60.             break;
  61.  
  62.         insert_at_last(val);
  63.     }
  64. }
  65. void insert_at_last(int value)
  66. {
  67.     node *temp_node;
  68.     temp_node = (node *) malloc(sizeof(node));
  69.     temp_node->number=value;
  70.     temp_node->next=NULL;
  71.     if(head==NULL)
  72.     {
  73.         head=temp_node;
  74.         last=temp_node;
  75.     }
  76.     else
  77.     {
  78.         last->next=temp_node;
  79.         last=temp_node;
  80.     }
  81.  
  82. }
  83.  
  84.  
  85. void insert_at_first(int value)
  86. {
  87.     node *temp_node = (node *) malloc(sizeof(node));
  88.  
  89.     temp_node->number=value;
  90.     temp_node->next = head;
  91.  
  92.     head = temp_node;
  93. }
  94.  
  95. void insert_after(int key, int value)
  96. {
  97.     node *myNode = head;
  98.     int flag = 0;
  99.  
  100.     while(myNode!=NULL)
  101.     {
  102.         if(myNode->number==key)
  103.         {
  104.             node *newNode = (node *) malloc(sizeof(node));
  105.             newNode->number = value;
  106.             newNode->next = myNode->next;
  107.             myNode->next = newNode;
  108.  
  109.             printf("%d is inserted after %d\n", value, key);
  110.  
  111.             flag = 1;
  112.  
  113.  
  114.             break;
  115.         }
  116.         else
  117.             myNode = myNode->next;
  118.     }
  119.  
  120.     if(flag==0)
  121.         printf("Key not found!\n");
  122.  
  123. }
  124.  
  125.  
  126. void delete_item(int value)
  127. {
  128.     node *myNode = head, *previous=NULL;
  129.     int flag = 0;
  130.  
  131.     while(myNode!=NULL)
  132.     {
  133.         if(myNode->number==value)
  134.         {
  135.             if(previous==NULL)
  136.                 head = myNode->next;
  137.             else
  138.                 previous->next = myNode->next;
  139.  
  140.             printf("%d is deleted from list\n", value);
  141.  
  142.             flag = 1;
  143.             free(myNode);
  144.             break;
  145.         }
  146.  
  147.         previous = myNode;
  148.         myNode = myNode->next;
  149.     }
  150.  
  151.     if(flag==0)
  152.         printf("Key not found!\n");
  153. }
  154.  
  155.  
  156. void search_item(int value)
  157. {
  158.     node *searchNode = head;
  159.     int flag = 0;
  160.  
  161.     while(searchNode!=NULL)
  162.     {
  163.         if(searchNode->number==value)
  164.         {
  165.             printf("%d is present in this list. Memory address is %d\n", value, searchNode);
  166.             flag = 1;
  167.             break;
  168.         }
  169.         else
  170.             searchNode = searchNode->next;
  171.     }
  172.  
  173.     if(flag==0)
  174.         printf("Item not found\n");
  175.  
  176. }
  177.  
  178.  
  179. void print_linked_list()
  180. {
  181.     printf("\nYour full linked list is\n");
  182.  
  183.     node *myList;
  184.     myList = head;
  185.  
  186.     while(myList!=NULL)
  187.     {
  188.         printf("%d ", myList->number);
  189.  
  190.         myList = myList->next;
  191.     }
  192.     puts("");
  193. }
Add Comment
Please, Sign In to add comment