реализация структуры для связанного списка

#data-structures

#структуры данных

Вопрос:

Когда я читал о связанном списке, я узнал, что структура для связанного списка как

 Struct node{           
   Struct node *next;  
   int value;  
}
  

Почему следующим является узел структуры *? Почему это не может быть просто целочисленный указатель? Как показано ниже

 Struct node{   
   int *next;  
   int value;  
}
  

почему это не может содержать адрес следующего узла? Кто-нибудь, пожалуйста, может дать мне объяснение?

Ответ №1:

На самом деле это то, что делает указатель ( *next ). Он содержит адрес чего-то другого. Определение типа описывает, что собой представляет это нечто другое (в данном случае struct node ). В противном случае приложение не знало бы, сколько байтов нужно прочитать и как интерпретировать данные.

Прочитайте больше об указателях.


Кстати. int *next будет содержать адрес целого числа.

Комментарии:

1. почему это не может быть похоже на nodeNext=(node *) malloc(sizeof(node *)); next =amp;nodeNext;

2. @Senthilnathan: Не совсем уверен, что вы пытаетесь сделать, но кажется намного сложнее. Почему вы хотите сделать это более сложным? Как я уже сказал, next уже содержит адрес следующего узла.

Ответ №2:

Почему следующим является узел структуры *? Почему это не может быть просто целочисленный указатель?

Потому что тогда вы бы указывали на адрес следующего целого числа. Это можно было бы использовать для извлечения значения следующего int, но не более того, так что с этого момента вы бы застряли.

Связывая узлы вместе, которые содержат целочисленные значения, вы можете перемещаться по узлам и извлекать значения int.

Комментарии:

1. почему это не может быть что-то вроде nodeNext=(node *) malloc(sizeof(node *)); next =amp;nodeNext; *next (даст адрес следующего узла) и * (next 1) (даст «значение»)

2. @Senthilnathan: вы полностью понимаете концепцию указателей? Я предполагаю, что используемый вами язык программирования — C. Если да, пожалуйста, обратитесь к главе 5 (о указателях и массивах) книги K amp; R. И затем обратитесь к главе 6 (она о структурах).