Реализация односвязного списка C#
пытаясь понять, как один список может быть реализован на C#, я наткнулся на ссылку ниже:
создание очень простого связанного списка.
однако, поскольку я новичок в C#, я запутался в синтаксисе, который указан в начальном разделе Обсуждения выше. Объявляется класс с именем Node, и в классе есть другой оператор, объявленный как "public Node next". Называется ли эта инструкция конструктором? Пожалуйста помощь.
public class Node {
public Node next;
public Object data;
}
4 ответов
в простой реализации односвязного списка Node
тип содержит ссылку на следующий элемент в списке, который является тем, что
существует простой способ создать список с одной связью. Давайте попробуем понять концепцию. Если концепция ясна, тогда вы можете понять саму логику. Односвязный список имеет узел с двумя разделами. Один имеет значение данных в нем, а другой имеет ссылочный адрес следующего узла. Посмотрите на следующий код:
Сначала нам нужно создать класс узла связанного списка
/// <summary>
/// Creating the Real World Entity of Linked List Node
/// </summary>
public class LinkedListNode
{
public Object Value { get; set; }
public LinkedListNode Next { get; set; }
}
здесь класс имеет значение и держатель для хранения ссылки следующего узла в последовательность. Далее нам нужно создать сам связанный список
/// <summary>
/// Creating the Linked List Class Itself. It defines the First and Last Nodes of Linked List
/// </summary>
public class LinkedList
{
public LinkedListNode First { get; set; }
public LinkedListNode Last { get; set; }
/// <summary>
/// Method to Add items into the Linked List
/// </summary>
/// <param name="_value"></param>
public void AddToLinkedList(object _value)
{
LinkedListNode node = new LinkedListNode();
node.Value = _value;
if (First == null)
{
First = node;
Last = node;
}
else
{
Last.Next = node;
Last = node;
}
}
/// <summary>
/// Method to display all items. We can further implement the IEnumerable interface
/// to Yield IEnumerator Interface.
/// </summary>
public void DisplayAllItems()
{
LinkedListNode current = First;
while (current != null)
{
Console.WriteLine(current.Value);
current = current.Next;
}
}
}
здесь ключ должен добавить элементы в связанный список. Сначала нам нужно проверить, существует ли связанный список или нет. Мы проверяем первый или головной узел в связанном списке. Если он пуст, мы назначаем узел в качестве первой точки входа. На данном этапе последний элемент является первым.
Теперь вот как мы добавляем и отображаем элементы
class Program
{
static void Main(string[] args)
{
LinkedList singlyLinkedList = new LinkedList();
singlyLinkedList.AddToLinkedList(4);
singlyLinkedList.AddToLinkedList(5);
singlyLinkedList.AddToLinkedList(7);
singlyLinkedList.AddToLinkedList(2);
singlyLinkedList.AddToLinkedList(1);
singlyLinkedList.AddToLinkedList(10);
singlyLinkedList.DisplayAllItems();
Console.ReadLine();
}
}
Дайте мне знать, если это имеет смысл :)
Это поле класса. Ссылка: http://msdn.microsoft.com/en-us/library/ms173118.aspx
помните, что связанный список содержит не только данные, но и ссылку / указатель на следующий узел в списке. Поскольку классы являются ссылочными типами в C#, вы не видите никакого специального синтаксиса, который вы иначе видели бы в C или c++.
struct Node
{
int Number;
struct Node* next; /* this points to the next node in the linked list */
};