Advertisement
xotohop

struct_list.cpp

Apr 8th, 2020
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct list
  4. {
  5.   int field; // поле данных
  6.   struct list *ptr; // указатель на следующий элемент
  7. };
  8.  
  9. struct list * init(int a) // а- значение первого узла
  10. {
  11.   struct list *lst;
  12.   // выделение памяти под корень списка
  13.   lst = (struct list*)malloc(sizeof(struct list));
  14.   lst->field = a;
  15.   lst->ptr = NULL; // это последний узел списка
  16.   return(lst);
  17. }
  18.  
  19. struct list * addelem(list *lst, int number)
  20. {
  21.   struct list *temp, *p;
  22.   temp = (struct list*)malloc(sizeof(list));
  23.   p = lst->ptr; // сохранение указателя на следующий узел
  24.   lst->ptr = temp; // предыдущий узел указывает на создаваемый
  25.   temp->field = number; // сохранение поля данных добавляемого узла
  26.   temp->ptr = p; // созданный узел указывает на следующий элемент
  27.   return(temp);
  28. }
  29.  
  30. struct list * deletelem(list *lst, list *root)
  31. {
  32.   struct list *temp;
  33.   temp = root;
  34.   while (temp->ptr != lst) // просматриваем список начиная с корня
  35.   { // пока не найдем узел, предшествующий lst
  36.     temp = temp->ptr;
  37.   }
  38.   temp->ptr = lst->ptr; // переставляем указатель
  39.   free(lst); // освобождаем память удаляемого узла
  40.   return(temp);
  41. }
  42.  
  43. struct list * deletehead(list *root)
  44. {
  45.   struct list *temp;
  46.   temp = root->ptr;
  47.   free(root); // освобождение памяти текущего корня
  48.   return(temp); // новый корень списка
  49. }
  50.  
  51. void listprint(list *lst)
  52. {
  53.   struct list *p;
  54.   p = lst;
  55.   do {
  56.     printf("%d ", p->field); // вывод значения элемента p
  57.     p = p->ptr; // переход к следующему узлу
  58.   } while (p != NULL);
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement