Advertisement
audreych

10947 - delete linked list

Feb 20th, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. //function.h
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. typedef struct _Node {
  6.     int data;
  7.     struct _Node *next;
  8. } Node;
  9.  
  10. void deleteNode(Node ** nd, int data);
  11. Node* createList();
  12.  
  13. Node* createList(){
  14.     int data = 0;
  15.     Node* head = NULL;
  16.     Node* tail = NULL;
  17.     while(data != -1){
  18.         scanf("%d", &data);
  19.         if(data == -1) break;
  20.         if(!head){
  21.             head = (Node*)malloc(sizeof(Node));
  22.             head->next = NULL;
  23.             head->data = data;
  24.             tail = head;
  25.         } else {
  26.             tail->next = (Node*)malloc(sizeof(Node));
  27.             tail = tail->next;
  28.             tail->data = data;
  29.             tail->next = NULL;
  30.         }
  31.     }
  32.     return head;
  33. }
  34. void deleteNode(Node ** head, int data){
  35.     int k = 1;
  36.     Node* curr = (*head);
  37.     if (data == 1){
  38.         Node* temp = (*head);
  39.         *head = (*head)->next;
  40.         free(temp);
  41.     } else {
  42.         while(k != data - 1){
  43.             if(!(curr->next)) break;
  44.             curr = curr->next;
  45.             k++;
  46.         }
  47.         if(curr->next) curr->next = curr->next->next;
  48.     }
  49.     return;
  50. }
  51.  
  52. //main.c
  53. void printList(Node *head){
  54.     Node *temp;
  55.     for(temp = head; temp!=NULL; temp=temp->next) {
  56.         printf("%d ", temp->data);
  57.     }
  58. }
  59.  
  60. void freeList(Node *head){
  61.     Node *temp;
  62.     for(temp=head; temp!=NULL; temp=head){
  63.         head = head->next;
  64.         free(temp);
  65.     }
  66. }
  67.  
  68. int main()
  69. {
  70.     Node *head;
  71.     int data;
  72.  
  73.     head = createList();
  74.  
  75.     while(1){
  76.         scanf("%d", &data);
  77.         if(data>-1){
  78.             deleteNode(&head,data);
  79.         }else break;
  80.        
  81.     }
  82.  
  83.     printList(head);
  84.     freeList(head);
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement