Адрес связанного списка - PullRequest
       44

Адрес связанного списка

0 голосов
/ 09 февраля 2020

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

1 Ответ

0 голосов
/ 09 февраля 2020

Адрес следующего узла находится в next.

(uintptr_t)( ((Node*)1000)->next )

Мы не можем дать вам конкретный c номер из предоставленной вами информации, потому что нет никакой связи между адресами узлы в связанном списке. В этом весь смысл связанного списка: поскольку узлы расположены независимо, вы можете вставлять и удалять их в любой точке списка, не перемещая остальные элементы.


Вы редактировали Ваш вопрос задать по адресам смежно распределенных объектов. По определению, адресом второго будет адрес первого плюс размер первого.

(uintptr_t)( ((char*)1000) + sizeof(Node) )

Мы не можем дать вам конкретный c номер из предоставленной вами информации, потому что мы не знаю размер Node. Даже если бы мы знали размер "целого числа" и Node* в вашей среде, это не указывало бы на размер Node.

Обратите внимание, что это будет чрезвычайно странно выделять два узла связанного списка, используя одно выделение памяти (чтобы сделать их непрерывно распределенными). Обратите внимание, что два распределения могут не создавать смежные объекты (даже если они расположены один за другим) из-за накладных расходов, избыточного выделения и заполнения выравнивания.

...