Почему узел связанного списка имеет следующий тип узла, а не тип int

#c# #linked-list

#c# #связанный список

Вопрос:

Я должен понять, что именно так мы создаем простой связанный список на C#

 public class Node {
public Node next;
public Object data;
}

public class LinkedList
{
    public Node head;
}
 

Однако, поскольку в базовой концепции связанного списка «next» обозначает не что иное, как указатель на следующий узел, который является просто адресом, я не понимаю, почему его тип данных должен быть «Node», а не какой-то bigint или float ? Может кто-нибудь, пожалуйста, помочь мне получить базовое право.

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

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

2. Я предполагаю, что вы пришли из C, где у вас есть структуры и указатель на структуры. В C # у вас нет выделения с объявлением переменной, поэтому его либо примитивы, либо «указатель» в C-смысле

3. » next обозначает не что иное, как указатель на следующий узел, который является просто адресом» Конечно, но весь этот материал памяти обрабатывается средой выполнения. C # — это язык более высокого уровня. Нам не нужно иметь дело с адресами и памятью. На языке программирования next относится к a Node .

4. Технически говоря, узел уже является ссылкой / адресом, но C # позволяет нам работать с ними типизированным формализованным способом как часть языка.

5. Если бы я написал связанный список на C #, это было бы a LinkedList<T> , а узлы были бы Node<T> (одинаковыми T). Свойствами узла будут Node<T> Next и T data . Я почти уверен, что это довольно близко к тому, как я делал это в C (за исключением, конечно, того, что это Next будет указатель на следующий узел, и это Data может быть либо значение (например, int или double), либо указатель на выделенный объект. Система типов C # позаботится об этом для меня

Ответ №1:

потому что любой адрес, который будет содержать «следующий», имеет тип Node, а не тип int или float .