LinkedList<T> это двухсвязный список, в котором каждый элемент хранит 2 ссылки:
• ссылка на следующий элемент
• ссылка на предыдущий элемент
LinkedList<T> относится к
типизированной коллекции... то есть все элементы одного типа.
C#
Создаем новое C# консольное приложение и напишем код:
using System;
using System.Collections.Generic; // подключаем LinkedList<T>
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class Book
{
public string BookName { set; get; }
public int Price { set; get; }
}
class Program
{
static void Main(string[] args)
{
// создаем LinkedList<T>
LinkedList<Book> myList = new LinkedList<Book>();
// добавляем элемент в начало
Book b1 = new Book() { BookName = "Властелин Колец", Price = 200 };
myList.AddFirst(b1);
// в myList элементы: {"Властелин Колец", 200}
// добавляем элемент в конец
Book b2 = new Book() { BookName = "Три мушкетера", Price = 300 };
myList.AddLast(b2);
// в myList элементы: {"Властелин Колец", 200}, {"Три мушкетера", 300}
// найти элемент (ищет по ссылке)
LinkedListNode<Book> node2 = myList.Find(b2);
// добавляем элемент перед node2 {"Три мушкетера", 300}
Book b3 = new Book() { BookName = "Гарри Поттер", Price = 400 };
myList.AddBefore(node2, b3);
// в myList элементы: {"Властелин Колец", 200}, {"Гарри Поттер", 400}, {"Три мушкетера", 300}
// найти элемент (ищет по ссылке)
LinkedListNode<Book> node1 = myList.Find(b1);
// добавляем элемент после node1 {"Властелин Колец", 200}
Book b4 = new Book() { BookName = "Волшебник", Price = 800 };
myList.AddAfter(node1, b4);
// в myList элементы: {"Властелин Колец", 200}, {"Волшебник", 800}, {"Гарри Поттер", 400}, {"Три мушкетера", 300}
// Вариант 1 (проходим элементы с начала в конец)
LinkedListNode<Book> node = myList.First;
while (node != null)
{
Console.WriteLine("Название=" + node.Value.BookName + " ,Цена=" + node.Value.Price);
node = node.Next; // next node
}
// Вариант 2 (проходим элементы с конца в начало)
node = myList.Last;
while (node != null)
{
Console.WriteLine("Название=" + node.Value.BookName + " ,Цена=" + node.Value.Price);
node = node.Previous; // previous node
}
// перебираем все элементы с помощью foreach
foreach (Book item in myList)
Console.WriteLine("Название=" + item.BookName + " ,Цена=" + item.Price);
}
}
}