Реализация односвязного списка 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 */
};