Динамические структуры данных — это структуры, которые могут изменять свой размер во время выполнения программы, добавляя или удаляя элементы. Динамическая структура данных позволяет эффективнее использовать память, так как память выделяется по мере необходимости.
Линейный список — это один из примеров динамической структуры данных, в котором элементы хранятся в последовательности. Каждый элемент в линейном списке связан с предыдущим и/или следующим элементом. В зависимости от реализации линейные списки могут быть односвязными или двусвязными.
Линейный список как абстрактный тип данных (АТД) представляет собой последовательность элементов, которая поддерживает основные операции добавления, удаления и доступа к элементам. Основные операции линейного списка включают:
Односвязный список состоит из узлов, каждый из которых содержит данные и ссылку на следующий узел. В односвязном списке можно проходить только в одном направлении, от начала списка к концу.
class Node
{
public int Data { get; set; }
public Node Next { get; set; }
public Node(int data)
{
Data = data;
Next = null;
}
}
class LinkedList
{
private Node head;
public LinkedList()
{
head = null;
}
// Добавление элемента в начало списка
public void AddFirst(int data)
{
Node newNode = new Node(data);
newNode.Next = head;
head = newNode;
}
// Добавление элемента в конец списка
public void AddLast(int data)
{
Node newNode = new Node(data);
if (head == null)
{
head = newNode;
}
else
{
Node current = head;
while (current.Next != null)
{
current = current.Next;
}
current.Next = newNode;
}
}
// Удаление первого элемента
public void RemoveFirst()
{
if (head != null)
{
head = head.Next;
}
}
// Вывод всех элементов списка
public void PrintList()
{
Node current = head;
while (current != null)
{
Console.Write(current.Data + " ");
current = current.Next;
}
Console.WriteLine();
}
}
class Program
{
static void Main()
{
LinkedList list = new LinkedList();
list.AddFirst(10);
list.AddLast(20);
list.AddLast(30);
list.PrintList(); // Вывод: 10 20 30
list.RemoveFirst();
list.PrintList(); // Вывод: 20 30
}
}
Next).
AddFirst) и конец списка (AddLast), а также для удаления элемента из
начала списка (RemoveFirst).
Линейные списки — это важный тип динамической структуры данных, который позволяет управлять последовательностью элементов с возможностью добавления и удаления данных. Линейный список как абстрактный тип данных поддерживает основные операции, такие как добавление, удаление и поиск. Односвязные списки представляют простейший пример динамической структуры данных, которую можно легко расширить для реализации более сложных структур, таких как двусвязные списки или циклические списки.