dllbridge

Untitled

Sep 25th, 2019
188
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include   <stdio.h>
  2. #include  <stdlib.h>
  3.  
  4.  
  5. struct Box
  6. {
  7.    
  8.      int    Data;
  9.    
  10.      Box  *pNext;
  11.      
  12. } *Tail = 0;
  13.  
  14.  
  15.  
  16. int nBox_Counter = 0;
  17.  
  18. int add(int D);
  19.  
  20. int del(int D);
  21.  
  22. int          n,
  23.        max = 20;
  24.  
  25.  
  26.  
  27.  
  28. /////////////////////////////////////////////////////////
  29. int main()                                             //
  30. {
  31.  
  32.     for(int i = 1; i <= max; i ++)
  33.     {
  34.        
  35.         add(i);
  36.     }
  37.    
  38.     Box *pBox = Tail;
  39.    
  40.     while(pBox)
  41.     {
  42.        
  43.         printf("%d ", pBox->Data);
  44.          
  45.         pBox = pBox->pNext;    
  46.     }    
  47.    
  48.     printf("\nThe above shows the contents of the list items.");
  49.    
  50.     printf("\nTo remove a list item containing any number,");
  51.    
  52. L_01:  
  53.     printf("\nenter that number (from 1 to %d) : ", max); scanf("%d", &n);
  54.    
  55.     if(n == 0) return 0;
  56.    
  57.     n = del(n);
  58.    
  59.     if(n) printf("Sucess !  %d items left. \n", nBox_Counter);
  60.     else  printf("No matching item found.\n");
  61.    
  62.     pBox = Tail;
  63.    
  64.     while(pBox)
  65.     {
  66.        
  67.         printf("%d ", pBox->Data);
  68.          
  69.         pBox = pBox->pNext;    
  70.     }
  71.     printf("\n");
  72.    
  73.     printf("\nDelete another item? (0 = EXIT)");
  74.  
  75.     goto L_01;
  76. }
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. /////////////////////////////////////////////////////////
  86. int add(int i)                                         //
  87. {
  88.    
  89.     Box *p   = (Box*)malloc(sizeof(Box));  
  90.    
  91.     p->Data  = i;
  92.    
  93.     p->pNext = Tail;
  94.    
  95.     Tail = p;
  96.    
  97.     nBox_Counter ++;
  98. }
  99.  
  100.  
  101.  
  102. //  
  103.  
  104. /////////////////////////////////////////////////////////      Эта функция должна находить элемент списка, содержащий
  105. int del(int D)                                         //               значение D, и удалять такой элемент из списка.
  106. {
  107.  
  108.  
  109.     Box  *pPrev =    0,
  110.          *p     = Tail;
  111.    
  112.     while(p)
  113.     {
  114.        
  115.         if(p->Data == D)
  116.         {
  117.            
  118.             if(pPrev) pPrev->pNext = p->pNext;                 
  119.             else              Tail = p->pNext;                     
  120.            
  121.             free(p);  nBox_Counter --;
  122.            
  123.             p = p->pNext; return 1;            
  124.         }      
  125.        
  126.         pPrev = p;       
  127.         p     = p->pNext;      
  128.     }  
  129.        
  130. return 0;                                                        //  Если такое значение не найдено, то возвращаем 0
  131. }
RAW Paste Data