Advertisement
Val_Kir

2lab_84

Feb 22nd, 2018
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. /*  Напишите программу создания линейного самоадресуемого списка из 10-и элементов.
  2.     В поле данных каждого элемента списка – порядковый номер этого элемента.
  3.     Вывод значений элементов списка выполните после построения списка. //изменено
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <time.h>
  9. #include <string.h>
  10.  
  11. struct Node
  12. {
  13.     int num;
  14.     Node *next;
  15. };
  16.  
  17. Node *add_to_list(Node *lnode, int num) //добавление в список
  18. {
  19.     Node *newel = new Node, *l = lnode;
  20.    
  21.     newel->num = num;
  22.     newel->next = NULL;
  23.    
  24.     if(!lnode)
  25.         return newel;
  26.    
  27.     while(l->next)
  28.         l = l->next;
  29.    
  30.     l->next = newel;
  31.    
  32.     return lnode;
  33. }
  34.  
  35. void del_list(Node *lnode) //удаление списка
  36. {
  37.     Node *p_s = lnode;
  38.     Node *p_tmp = p_s;
  39.    
  40.     while(p_s)
  41.     {
  42.         p_s = p_s->next;
  43.         delete p_tmp;
  44.         p_tmp = p_s;
  45.     }
  46. }
  47.  
  48. char* list_to_str(Node *l) //перевод из списка в строку
  49. {
  50.     char buf[256];
  51.     char *str = new char[256];
  52.     str[0] = '\0';
  53.     for(; l; l = l->next)
  54.     {
  55.         itoa(l->num, buf, 10);
  56.         str = strcat(str, strcat(buf, " "));
  57.     }
  58.     return str;
  59. }
  60.  
  61. int main()
  62. {
  63.     int n, buff;
  64.     Node *lnode = NULL;
  65.  
  66.     srand(time(0));
  67.    
  68.     printf("N: ");
  69.     scanf("%d", &n);
  70.  
  71.     for ( int i=0; i<n; ++i)
  72.     {
  73.         buff=rand()%100;
  74.         lnode=add_to_list(lnode, buff);
  75.     }
  76.     printf("List: %s \n", list_to_str(lnode));
  77.  
  78.     del_list(lnode);
  79.     system("pause");
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement