#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
относится к aNode
.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 .