IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

Lista połączona w języku C# (jak działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

Lista powiazana to liniowa struktura danych skladajaca sie z serii wezlow, nazywanych tez elementami. W przeciwienstwie do tablic, gdzie elementy/wezły sa przechowywane w ciaglej pamięci, listy powiazane wykorzystuja dynamiczna alokacje pamięci, pozwalając na rozrzucenie elementow/wezlow w całej pamięci.

W najprostszej formie listy powiazane skladaja sie z wezlow polaczonych liniowo. Kazdy wezel zawiera dwie główne części:

  1. Dane: Ladunek przechowywany w wezle. Mogą to być dowolne typy danych w zależności od implementacji, takie jak liczby całkowite, ciagi znakow, obiekty itp.
  2. Nastepny wskaźnik: Referencja (lub wskaźnik) do nastepnego wezla w sekwencji. Ten wskaźnik wskazuje lokalizacje pamięci nastepnego wezla w liscie powiazanej.

Ostatni wezel w liscie powiazanej zwykle wskazuje na pusta referencje, sygnalizujac koniec listy.

W tym artykułe przyjrzymy sie szczegółowo liscie powiazanej w C# oraz zbadamy biblioteke IronPDF, narzędzie do generowania PDF od Iron Software.

Rodzaje list powiazanych

1. Lista jednokierunkowa

Lista jednokierunkowa ma wezel z tylko jedną referencją, typowo wskazujacą na następny wezel w sekwencji. Poruszanie sie po liscie jest ograniczone do przemieszczania sie w jednym kierunku, zazwyczaj od glowy (wezel poczatkowy) do ogona (wezel koncowy).

2. Lista dwukierunkowa

W liscie dwukierunkowej kazdy wezel zawiera dwie referencje: jedna wskazujaca na następny wezel, a druga na poprzedni wezel w sekwencji. To dwukierunkowe łącze umożliwia przeszukiwanie w obu kierunkach do przodu i do tylu.

3. Lista cykliczna

W liscie cyklicznej ostatni wezel wskazuje z powrotem na pierwszy wezel, tworząc strukture kolowa. Ten typ listy powiazanej może być zaimplementowany przy użyciu jednokierunkowych lub dwukierunkowych wezlow.

Podstawowe operacje na listach powiazanych

  1. Wstawianie: Dodawanie nowego wezla do listy na konkretnej pozycji, takiej jak początek, koniec lub srodek.
  2. Usuwanie: Usuwanie okreslonego wezla z listy i odpowiednie dostosowanie wskaźników sasiadujacych wezlow.
  3. Przejscie: Iteracja przez liste w celu uzyskania dostepu do danych kazdego wezla lub manipulacji nimi.
  4. Wyszukiwanie: Znajdowanie okreslonego wezla w liscie na podstawie jego wartosci danych.

Linked List in C#

W C#, można zaimplementować listę powiązaną, używając klasy LinkedList z przestrzeni nazw System.Collections.Generic. Oto przykład wszystkich podstawowych operacji:

using System;
using System.Collections.Generic;

namespace CsharpSamples
{
    public class Program
    {
        public static void Main()
        {
            // Create a new linked list of integers
            LinkedList<int> linkedList = new LinkedList<int>();
            
            // Add elements to the linked list
            linkedList.AddLast(10);
            linkedList.AddLast(20);
            linkedList.AddLast(30);
            linkedList.AddLast(40);
            
            // Traverse and print the elements of the linked list
            Console.WriteLine("Traverse Linked List elements:");
            foreach (var item in linkedList)
            {
                Console.WriteLine(item);
            }
            
            // Display number of linked list elements
            Console.WriteLine($"Number of Linked List elements: {linkedList.Count}");
            
            // Find/Search for an element in the linked list
            Console.WriteLine("\nFind/Search Element Linked List elements: 30");
            var foundNode = linkedList.Find(30);
            
            if (foundNode != null)
            {
                Console.WriteLine(
                    $"Found Value: {foundNode.Value}, " +
                    $"Next Element: {(foundNode.Next != null ? foundNode.Next.Value.ToString() : "null")}, " +
                    $"Previous Element: {(foundNode.Previous != null ? foundNode.Previous.Value.ToString() : "null")}"
                );
            }
            
            // Insert an element at a specified node
            LinkedListNode<int> current = linkedList.Find(20);
            if (current != null)
            {
                linkedList.AddAfter(current, 25);
            }
            
            Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
            Console.WriteLine("\nLinked List elements after insertion:");
            foreach (var item in linkedList)
            {
                Console.WriteLine(item);
            }
            
            // Remove an existing node from the linked list
            linkedList.Remove(30);
            
            Console.WriteLine("\nLinked List elements after removal:");
            foreach (var item in linkedList)
            {
                Console.WriteLine(item);
            }
            
            Console.WriteLine($"\nNumber of Linked List elements: {linkedList.Count}");
        }
    }
}

Wyjaśnienie kodu

  1. Utwórz nową listę powiązaną z liczbami całkowitymi za pomocą new LinkedList<int>().
  2. Dodaj okreslone obiekty wartosci do listy powiazanej.
  3. Przemierz i wydrukuj elementy listy powiązanej za pomocą pętli foreach.
  4. Znajdz/wyszukaj element w liscie powiazanej.
  5. Wstaw element w określonym węźle, używając metod Find i AddAfter.
  6. Usuń istniejący węzeł z listy powiązanej, używając metody Remove.

Wynik

Lista powiązana w C# (Jak działa dla programistów): Rysunek 1 - Wynik listy powiązanej

Przedstawiamy IronPDF

Dowiedz sie więcej o IronPDF to potezna biblioteka PDF C# opracowana i utrzymywana przez Iron Software. Zapewnia wszechstronny zestaw funkcji do tworzenia, edytowania i wydobywania zawartości z dokumentów PDF w projektach .NET.

Kluczowe punkty dotyczące IronPDF

Konwersja HTML do PDF

IronPDF pozwala na konwersje zawartości HTML do formatu PDF. Możesz łatwo renderować strony HTML, URL i ciagi HTML do plików PDF.

Bogaty interfejs API

Biblioteka oferuje przyjazny dla użytkownika interfejs API, ktory umożliwia deweloperom generowanie profesjonalnej jakosci plików PDF bezpośrednio z HTML. Czy potrzebujesz stworzyć faktury, raporty czy inne dokumenty, IronPDF upraszcza ten proces.

Obsługa wielu platform

IronPDF jest kompatybilny z rozmaitymi środowiskami .NET, w tym .NET Core, .NET Standard i .NET Framework. Działa na platformach Windows, Linux i macOS.

Wszechstronnosc

IronPDF obsługuje różne typy projektow, takie jak aplikacje webowe (Blazor i WebForms), aplikacje desktopowe (WPF i MAUI) oraz aplikacje konsolowe.

Zrodla zawartości

Możesz generować pliki PDF z różnych źródeł zawartości, w tym plików HTML, widoków Razor (serwer Blazor), CSHTML (MVC i Razor), ASPX (WebForms) i XAML (MAUI).

Dodatkowe funkcje

  1. Dodaj nagłówki i stopki do plików PDF.
  2. Scalic, podzielić, dodac, skopiowac i usunac strony PDF.
  3. Ustawic hasla, uprawnienia i podpisy cyfrowe.
  4. Optymalizowac wydajność za pomoca wielowątkowośći i wsparcia asynchronicznego.

Kompatybilność

IronPDF zgodne jest z normami PDF, w tym wersjami od 1.2 do 1.7, PDF/UA i PDF/A. Obslugiwane jest także kodowanie znakow UTF-8, adresy bazowe URL i kodowanie zasobów.

Generowanie dokumentu PDF za pomocą LinkedList

Teraz utwórzmy dokument PDF przy użyciu IronPDF i zademonstrujmy również wykorzystanie łańcuchów LinkedList.

Na początek, otworz Visual Studio i stworz aplikacje konsolowa, wybierajac z szablonow projektow, jak pokazano poniżej.

Lista powiązana w C# (Jak działa dla programistów): Rysunek 2 - Nowy projekt

Podaj nazwe projektu i lokalizacje.

Lista powiązana w C# (Jak działa dla programistów): Rysunek 3 - Konfiguracja projektu

Wybierz wymaganą wersję .NET.

Lista powiązana w C# (Jak działa dla programistów): Rysunek 4 - Docelowa platforma

Zainstaluj IronPDF z menadzera pakietow Visual Studio, jak poniżej.

Lista powiązana w C# (Jak działa dla programistów): Rysunek 5 - Instalacja IronPDF

Lub może być zainstalowany przy użyciu poniższej linii polecen.

dotnet add package IronPdf --version 2024.4.2

Dodaj poniższy kod.

using System;
using System.Collections.Generic;
using IronPdf;

namespace CsharpSamples
{
    public class Program
    {
        public static void Main()
        {
            var content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>";
            content += "<h2>Create a new linked list of strings</h2>";
            content += "<p>Create a new linked list of strings with new LinkedList&lt;string&gt;()</p>";
            
            // Create a new linked list of strings
            LinkedList<string> linkedList = new LinkedList<string>();
            
            // Add elements to the linked list
            content += "<p>Add Apple to linkedList</p>";
            linkedList.AddLast("Apple");
            
            content += "<p>Add Banana to linkedList</p>";
            linkedList.AddLast("Banana");
            
            content += "<p>Add Orange to linkedList</p>";
            linkedList.AddLast("Orange");
            
            content += "<h2>Print the elements of the linked list</h2>";
            Console.WriteLine("Linked List elements:");
            
            foreach (var item in linkedList)
            {
                content += $"<p>{item}</p>";
                Console.WriteLine(item);
            }
            
            content += "<h2>Insert an element at a specific position</h2>";
            LinkedListNode<string> node = linkedList.Find("Banana");
            if (node != null)
            {
                linkedList.AddAfter(node, "Mango");
                content += "<p>Find Banana and insert Mango After</p>";
            }
            
            Console.WriteLine("\nLinked List elements after insertion:");
            content += "<h2>Linked List elements after insertion:</h2>";
            
            foreach (var item in linkedList)
            {
                content += $"<p>{item}</p>";
                Console.WriteLine(item);
            }
            
            content += "<h2>Remove an element from the linked list</h2>";
            linkedList.Remove("Orange");
            content += "<p>Remove Orange from linked list</p>";
            
            Console.WriteLine("\nLinked List elements after removal:");
            content += "<h2>Linked List elements after removal:</h2>";
            
            foreach (var item in linkedList)
            {
                content += $"<p>{item}</p>";
                Console.WriteLine(item);
            }
            
            // Create a PDF renderer
            var renderer = new ChromePdfRenderer();
            
            // Create a PDF from HTML string
            var pdf = renderer.RenderHtmlAsPdf(content);
            
            // Save to a file
            pdf.SaveAs("AwesomeIronOutput.pdf");
        }
    }
}

Wyjaśnienie kodu

  1. Na początku tworzymy zawartość dla PDF, korzystając z obiektu ciągu zawartości. Zawartosc jest generowana jako ciag HTML.
  2. Utwórz nową listę powiązaną łańcuchów znaków za pomocą new LinkedList<string>().
  3. Dodaj elementy do listy powiazanej i dodatkowo dolacz informacje do ciągu zawartości PDF.
  4. Wydrukuj elementy listy powiazanej i dolacz do zawartości PDF.
  5. Wstaw element na określonej pozycji za pomocą metody AddAfter. zaktualizuj zawartość i wydrukuj wynikowa liste.
  6. Usuń element z listy powiązanej, używając metody Remove, zaktualizuj zawartość i wydrukuj wynikową listę.
  7. Na koniec zapisz wygenerowany łańcuch zawartości HTML do dokumentu PDF za pomocą metod ChromePdfRenderer, RenderHtmlAsPdf i SaveAs.

Wynik

Lista powiązana w C# (Jak działa dla programistów): Rysunek 6 - IronPDF z LinkedList Wynik

Wyjscie ma znak wodny, ktory można usunac, korzystając z ważnej licencji z strony licencji IronPDF.

Licencja IronPDF

biblioteka IronPDF wymaga licencji do uruchomienia, która można uzyskać na stronie licencjonowania produktu.

Wklej klucz w pliku appSettings.json poniżej.

{
  "IronPdf.License.LicenseKey": "The Key Goes Here"
}
JSON

Wnioski

C# LinkedList dostarcza wszechstronną strukturę danych do zarządzania kolekcjami elementów, oferującą efektywne wstawienia i usunięcia, jednocześnie dostosowując się do dynamicznego zmieniania rozmiaru, podobnie jak domyślna funkcja haszująca. Listy powiazane sa powszechnie używane w różnych aplikacjach i algorytmach, takich jak implementacja stosow, kolejek, tabel symboli i systemów zarządzania pamięcią. Zrozumienie cech i operacji list powiazanych jest niezbędne do budowy efektywnych i skalowalnych rozwiazan programowych.

Podsumowujac, podczas gdy listy powiazane świetnie sprawdzają sie w okreslonych scenariuszach, takich jak dynamiczne struktury danych i czeste wstawiania/usuwania, mogą nie być najlepszym wyborem dla aplikacji wymagajacych czestego przypadkowego dostepu lub radzenia sobie z środowiskami o ograniczonej pamięci. Dokladne rozwazenie specyficznych wymagań i charakterystyk danych pomoże w wyborze najbardziej odpowiedniej struktury danych dla konkretnego zadania.

Biblioteka IronPDF firmy Iron Software pozwala programistom na łatwe tworzenie i edycję dokumentów PDF, umożliwiając wykorzystanie zaawansowanych umiejętności do tworzenia nowoczesnych aplikacji.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta