Lila25mila
Сәуір 8, 2019, 1:44 Т.Қ.

Байланыстырылған тізім түрлері – жеке байланыстырылған, қос байланысқан және дөңгелек

Существует три распространенных типа связанного списка.

  • Единственный связанный список
  • Двусвязный список
  • Круговой связанный список

Единственный связанный список

Это самый распространенный. Каждый узел имеет данные и указатель на следующий узел.

Где адрес первого узла специальное имя, называемое HEAD.
На последний узел в связанном списке указывает NULL.

Узел представлен как:

  1. struct node {
  2. int data;
  3. struct node *next;
  4. }

Трехэлементный односвязный список может быть создан как:

  1. /* Инициализируем узлы */
  2. struct node *head;
  3. struct node *one = NULL;
  4. struct node *two = NULL;
  5. struct node *three = NULL;
  6.  
  7. /* Выделяем память */
  8. one = malloc(sizeof(struct node));
  9. two = malloc(sizeof(struct node));
  10. three = malloc(sizeof(struct node));
  11.  
  12. /* Назначаем значения данных */
  13. one->data = 1;
  14. two->data = 2;
  15. three->data = 3;
  16.  
  17. /* Соединяем узлы */
  18. one->next = two;
  19. two->next = three;
  20. three->next = NULL;
  21.  
  22. /* Сохраняем адрес первого узла в голове */
  23. head = one;
Двусвязный список

Мы добавляем указатель на предыдущий узел в двусвязном списке. Таким образом, мы можем идти в любом направлении: вперед (next) или назад (prev).

Узел представлен как:

  1. struct node {
  2. int data;
  3. struct node *next;
  4. struct node *prev;
  5. }

Двусвязный список из трех участников может быть создан как:

  1. /* Инициализируем узлы */
  2. struct node *head;
  3. struct node *one = NULL;
  4. struct node *two = NULL;
  5. struct node *three = NULL;
  6.  
  7. /* Выделяем память */
  8. one = malloc(sizeof(struct node));
  9. two = malloc(sizeof(struct node));
  10. three = malloc(sizeof(struct node));
  11.  
  12. /* Назначаем значения данных */
  13. one->data = 1;
  14. two->data = 2;
  15. three->data = 3;
  16.  
  17. /* Соединяем узлы */
  18. one->next = two;
  19. one->prev = NULL;
  20.  
  21. two->next = three;
  22. two->prev = one;
  23.  
  24. three->next = NULL;
  25. three->prev = two;
  26.  
  27. /* Сохраняем адрес первого узла в голове */
  28. head = one;
Круговой связанный список

Круговой связанный список - это вариант связанного списка, в котором последний элемент связан с первым элементом. Это образует круговую петлю.

Круговой связанный список может быть либо односвязным, либо двусвязным.

  • Для односвязного списка указатель next последнего элемента указывает на первый элемент;
  • В двусвязном списке указатель prev первого элемента также указывает на последний элемент.

Круговой односвязный список из трех членов может быть создан как:

  1. /* Инициализируем узлы */
  2. struct node *head;
  3. struct node *one = NULL;
  4. struct node *two = NULL;
  5. struct node *three = NULL;
  6.  
  7. /* Выделяем память */
  8. one = malloc(sizeof(struct node));
  9. two = malloc(sizeof(struct node));
  10. three = malloc(sizeof(struct node));
  11.  
  12. /* Назначаем значения данных */
  13. one->data = 1;
  14. two->data = 2;
  15. three->data = 3;
  16.  
  17. /* Соединяем узлы */
  18. one->next = two;
  19. two->next = three;
  20. three->next = one;
  21.  
  22. /* Сохраняем адрес первого узла в голове */
  23. head = one;

Мақала бойынша сұралады0сұрақтар(лар)

1

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз