Advertisement
Md_Touhid

Singly linked list

Jan 22nd, 2016 (edited)
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.97 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int flag=1;
  5.  
  6. typedef struct Node
  7. {
  8.     int data;
  9.     struct Node *next;
  10. } node;
  11.  
  12.  
  13. void insert(node *pointer, int data)
  14. {
  15.     while(pointer -> next != NULL)
  16.     {
  17.         pointer = pointer -> next;
  18.     }
  19.  
  20.     pointer -> next = (node*)malloc(sizeof(node)); //Allocate memory for new node
  21.     pointer = pointer -> next; //Move pointer to newly allocated node
  22.     pointer -> data = data; //Set data field of new node
  23.     pointer -> next = NULL; //Set next field of new node to NULL to indicate end of list
  24.  
  25.     printf("\n    Data successfully inserted...");
  26. }
  27.  
  28.  
  29. void delete(node *pointer, int data)
  30. {
  31.     while(pointer->next!=NULL && (pointer -> next) -> data!=data)
  32.     {
  33.         pointer = pointer -> next;
  34.     }
  35.  
  36.     if(pointer -> next == NULL)
  37.     {
  38.         printf("\n    '%d' isn't present in the list!", data);
  39.         return;
  40.     }
  41.  
  42.     node *temp;
  43.     temp = pointer->next;
  44.     pointer->next = temp->next;
  45.  
  46.     free(temp);
  47.  
  48.     printf("\n    Data successfully deleted...");
  49.  
  50. }
  51.  
  52. void print(node *pointer)
  53. {
  54.  
  55.     if(pointer == NULL && flag == 1)
  56.     {
  57.         printf("\n    The list is empty!");
  58.     }
  59.  
  60.     if(pointer == NULL)
  61.     {
  62.         return;
  63.     }
  64.  
  65.     else
  66.     {
  67.         flag = 0;
  68.         printf("  %d", pointer -> data);
  69.         print(pointer->next);
  70.     }
  71.    
  72.     flag = 1;
  73. }
  74.  
  75.  
  76. int find(node *pointer, int data)
  77. {
  78.     pointer = pointer->next;
  79.  
  80.     while(pointer != NULL)
  81.     {
  82.         if(pointer->data == data)
  83.         {
  84.             return 1;
  85.         }
  86.         pointer = pointer->next;
  87.     }
  88.  
  89.     return 0;
  90. }
  91.  
  92.  
  93. void update(node *pointer, int data)
  94. {
  95.     int new_data;
  96.     printf("\n    Enter new data: ");
  97.     scanf("%d", &new_data);
  98.  
  99.     pointer = pointer->next;
  100.  
  101.     while(pointer != NULL)
  102.     {
  103.         if(pointer->data == data)
  104.         {
  105.             pointer->data = new_data;
  106.             printf("\n    Data update successful...");
  107.         }
  108.  
  109.         pointer = pointer->next;
  110.     }
  111.  
  112.     return;
  113. }
  114.  
  115.  
  116. int main(void)
  117. {
  118.     node *start, *temp;
  119.     start = (node*)malloc(sizeof(node));
  120.     temp = start;
  121.     temp -> next = NULL;
  122.  
  123.     printf("1. Insert\n
  124.             2. Delete\n
  125.             3. Print\n
  126.             4. Find\n
  127.             5. Update\n
  128.             6. Terminate this program");
  129.  
  130.     while(flag!=0)
  131.     {
  132.          int query;
  133.          printf("\n\nEnter your choice : ");
  134.          scanf("%d", &query);
  135.  
  136.          if(query == 1)
  137.          {
  138.              int data;
  139.              printf("\n    Enter the data that you want to insert : ");
  140.              scanf("%d", &data);
  141.  
  142.              insert(start, data);
  143.          }
  144.  
  145.          else if(query == 2)
  146.          {
  147.              int data;
  148.              printf("\n    Enter the data that you want to delete : ");
  149.              scanf("%d", &data);
  150.  
  151.              delete(start, data);
  152.          }
  153.  
  154.          else if(query == 3)
  155.          {
  156.              printf("\n    List:");
  157.              print(start->next);
  158.          }
  159.  
  160.          else if(query == 4)
  161.          {
  162.              int data;
  163.              printf("\n    Enter the data that you want to find : ");
  164.              scanf("%d", &data);
  165.  
  166.              int status = find(start, data);
  167.  
  168.              if(status == 1)
  169.              {
  170.                 printf("\n    Found...");
  171.              }
  172.              else
  173.              {
  174.                 printf("\n    Data is not in the list!");
  175.              }
  176.          }
  177.  
  178.          else if(query == 5)
  179.          {
  180.              int data;
  181.              printf("\n    Enter the data that you want to update : ");
  182.              scanf("%d", &data);
  183.  
  184.              int flag = find(start, data);
  185.  
  186.              if(flag == 1)
  187.              {
  188.                 printf("\n    Found...");
  189.  
  190.                 update(start, data);
  191.              }
  192.              else
  193.              {
  194.                 printf("\n    Data is not in the list!");
  195.              }
  196.          }
  197.  
  198.          else if(query == 6) flag = 0;
  199.     }
  200.  
  201.     printf("\n\nProgram terminated!\n\n");
  202.  
  203.     return 0;
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement