C# Bağlı Liste (Geliştiriciler için Nasıl Çalışır)
Bağlantılı bir liste, düğümlerden oluşan doğrusal bir veri yapısıdır ve ayrıca eleman denir. Elemanlar/düğümlerin ardışık bellek konumlarında saklandığı dizilerin aksine, bağlı listeler dinamik bellek tahsisini kullanarak, elemanların/düğümlerin belleğin her yerine dağılmasına olanak tanır.
En basit biçiminde, "bağlantılı listeler" birbiriyle doğrusal bir şekilde bağlanan düğümlerden oluşur. Her düğüm iki ana kısımdan oluşur:
- Veri: Düğümde depolanan yük. Bu, uygulamaya bağlı olarak tamsayılar, diziler, nesneler vb. gibi herhangi bir veri türünden olabilir.
- Sonraki İşaretçi: Dizideki bir sonraki düğüme referans (veya işaretçi). Bu işaretçi, bağlı listedeki takip eden düğümün bellek yerini işaret eder.
Bağlı bir listedeki son düğüm, genellikle listenin sonunu belirten bir boş referansa işaret eder.
Bu makalede, C#'ta bağlı listeyi ayrıntılı olarak inceleyeceğiz ve Iron Software tarafından geliştirilmiş bir PDF oluşturma aracı olan IronPDF kütüphanesi'ni keşfedeceğiz.
Bağlı Listelerin Türleri
1. Tekli Bağlantılı Liste
Tekli bağlantılı bir liste, genellikle dizideki bir sonraki düğüme işaret eden tek bir referansa sahip bir düğüme sahiptir. Listeyi gezinmek, genellikle baştan (ilk düğüm) sona (son düğüm) doğru tek bir yönde hareket etmekle sınırlıdır.
2. Çiftli Bağlantılı Liste
Çiftli bağlantılı bir listede, her düğüm iki referans içerir: biri bir sonraki düğüme, diğeri ise dizideki önceki düğüme işaret eder. Bu çift yönlü bağlantı, ileri ve geri yönlerde gezinmeyi sağlar.
3. Dairesel Bağlantılı Liste
Dairesel bir bağlantılı listede, son düğüm tekrar ilk düğüme işaret eder ve dairesel bir yapı oluşturur. Bu tür bir bağlantılı liste, ya tekli ya da çiftli bağlantılı düğümler kullanılarak uygulanabilir.
Bağlı Listelerde Temel İşlemler
- Ekleme: Başlangıç, bitiş veya orta kısım gibi belirli bir konumda listeye yeni bir düğüm ekleme.
- Silme: Listeden belirtilmiş bir nesne düğümünü kaldırma ve komşu düğümlerin işaretçilerini buna göre ayarlama.
- Geçiş: Her düğümün verisine erişmek veya üzerinde işlem yapmak için liste boyunca tekrar tekrar ilerleme.
- Arama: Verileri belirtilen bir değerlere dayalı olarak listede belirli bir düğüm bulma.
C#'ta Bağlantılı Liste
C#'da, System.Collections.Generic isim alanından LinkedList sınıfını kullanarak bir bağlantılı liste uygulayabilirsiniz. İşte tüm temel işlemlerin bir örneği:
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}");
}
}
}
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}");
}
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Namespace CsharpSamples
Public Class Program
Public Shared Sub Main()
' Create a new linked list of integers
Dim linkedList As New LinkedList(Of Integer)()
' 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:")
For Each item In linkedList
Console.WriteLine(item)
Next 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(vbLf & "Find/Search Element Linked List elements: 30")
Dim foundNode = linkedList.Find(30)
If foundNode IsNot Nothing Then
Console.WriteLine($"Found Value: {foundNode.Value}, " & $"Next Element: {(If(foundNode.Next IsNot Nothing, foundNode.Next.Value.ToString(), "null"))}, " & $"Previous Element: {(If(foundNode.Previous IsNot Nothing, foundNode.Previous.Value.ToString(), "null"))}")
End If
' Insert an element at a specified node
Dim current As LinkedListNode(Of Integer) = linkedList.Find(20)
If current IsNot Nothing Then
linkedList.AddAfter(current, 25)
End If
Console.WriteLine($vbLf & "Number of Linked List elements: {linkedList.Count}")
Console.WriteLine(vbLf & "Linked List elements after insertion:")
For Each item In linkedList
Console.WriteLine(item)
Next item
' Remove an existing node from the linked list
linkedList.Remove(30)
Console.WriteLine(vbLf & "Linked List elements after removal:")
For Each item In linkedList
Console.WriteLine(item)
Next item
Console.WriteLine($vbLf & "Number of Linked List elements: {linkedList.Count}")
End Sub
End Class
End Namespace
Kod Açıklaması
new LinkedList<int>()kullanarak yeni bir tamsayı bağlantılı liste oluşturun.- Belirtilen değer nesnelerini bağlı listeye ekleyin.
foreachdöngüsü kullanarak bağlantılı listenin elemanlarını dolaşın ve yazdırın.- Bağlı listede bir eleman bulma/araması yapın.
FindveAddAfteryöntemlerini kullanarak belirli bir düğüme bir eleman ekleyin.Removeyöntemini kullanarak bağlantılı listeden mevcut bir düğümü kaldırın.
Çıktı

IronPDF'i Tanıtma
IronPDF hakkında daha fazla keşfedin, Iron Software tarafından geliştirilmiş ve sürdürülen güçlü bir C# PDF kütüphanesidir. .NET projeleri içinde PDF belgeleri oluşturmak, düzenlemek ve içerik çıkarmak için kapsamlı bir özellik seti sunar.
IronPDF Hakkında Ana Noktalar
HTML'den PDF'ye Dönüşüm
IronPDF, HTML içeriğini PDF formatına dönüştürmenizi sağlar. HTML sayfalarını, URL'leri ve HTML dizilerini kolaylıkla PDF'lere dönüştürebilirsiniz.
Zengin API
Kütüphane, geliştiricilerin doğrudan HTML'den profesyonel kalitede PDF'ler oluşturmasına olanak tanıyan kullanıcı dostu bir API sunar. Fatura, rapor veya diğer belgeleri oluşturmanız gerekiyorsa, IronPDF süreci basitleştirir.
Platformlar Arası Destek
IronPDF, .NET Core, .NET Standard ve .NET Framework dahil olmak üzere çeşitli .NET ortamları ile uyumludur. Windows, Linux ve macOS platformlarında çalışır.
Çok Yönlülük
IronPDF, Blazor ve WebForms web uygulamaları, WPF ve MAUI masaüstü uygulamaları ve konsol uygulamaları gibi çeşitli proje türlerini destekler.
İçerik Kaynakları
HTML dosyaları, Razor görünümleri (Blazor Server), CSHTML (MVC ve Razor), ASPX (WebForms) ve XAML (MAUI) dahil olmak üzere çeşitli içerik kaynaklarından PDF'ler oluşturabilirsiniz.
Ek Özellikler
- PDF'lere başlıklar ve altbilgiler ekleyin.
- PDF sayfalarını birleştirin, ayırın, ekleyin, kopyalayın ve silin.
- Şifreler, izinler ve dijital imza ayarlayın.
- Çoklu iş parçacığı ve eşzamansız destekle performansı optimize edin.
Uyumluluk
IronPDF, 1.2'den 1.7'ye kadar olan sürümler, PDF/UA ve PDF/A dahil olmak üzere PDF standartlarına uygundur. Ayrıca, UTF-8 karakter kodlaması, temel URL'ler ve varlık kodlaması destekler.
LinkedList Kullanarak PDF Belgesi Oluşturun
Şimdi IronPDF kullanarak bir PDF belgesi oluşturalım ve LinkedList dizilerinin kullanımını da gösterelim.
Başlamak için, Visual Studio'yu açın ve aşağıda gösterilen şablonu seçerek bir konsol uygulaması oluşturun.

Proje adı ve konumunu sağlayın.

Gerekli .NET sürümünü seçin.

Aşağıdaki gibi Visual Studio Paket yöneticisinden IronPDF'yi kurun.

Veya aşağıdaki komut satırı kullanılarak kurulabilir.
dotnet add package IronPdf --version 2024.4.2
Aşağıdaki kodu ekleyin.
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<string>()</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");
}
}
}
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<string>()</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");
}
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports IronPdf
Namespace CsharpSamples
Public Class Program
Public Shared Sub Main()
Dim 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<string>()</p>"
' Create a new linked list of strings
Dim linkedList As New LinkedList(Of 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:")
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
content &= "<h2>Insert an element at a specific position</h2>"
Dim node As LinkedListNode(Of String) = linkedList.Find("Banana")
If node IsNot Nothing Then
linkedList.AddAfter(node, "Mango")
content &= "<p>Find Banana and insert Mango After</p>"
End If
Console.WriteLine(vbLf & "Linked List elements after insertion:")
content &= "<h2>Linked List elements after insertion:</h2>"
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
content &= "<h2>Remove an element from the linked list</h2>"
linkedList.Remove("Orange")
content &= "<p>Remove Orange from linked list</p>"
Console.WriteLine(vbLf & "Linked List elements after removal:")
content &= "<h2>Linked List elements after removal:</h2>"
For Each item In linkedList
content &= $"<p>{item}</p>"
Console.WriteLine(item)
Next item
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from HTML string
Dim pdf = renderer.RenderHtmlAsPdf(content)
' Save to a file
pdf.SaveAs("AwesomeIronOutput.pdf")
End Sub
End Class
End Namespace
Kod Açıklaması
- İlk olarak, bir içerik dizeleri nesnesi kullanarak PDF için içeriği oluşturmaya başlıyoruz. İçerik bir HTML dizesi olarak üretilir.
new LinkedList<string>()ile yeni bir dizge bağlantılı liste oluşturun.- Bağlı listeye elemanlar ekleyin ve aynı zamanda PDF içerik dizgisine bilgi ekleyin.
- Bağlı listenin elemanlarını yazdırın ve PDF içeriğine ekleyin.
AddAfteryöntemini kullanarak belirli bir konuma bir eleman ekleyin; içeriği güncelleyin ve ortaya çıkan listeyi yazdırın.Removeyöntemini kullanarak bağlantılı listeden bir elemanı kaldırın, içeriği güncelleyin ve sonuçtaki listeyi yazdırın.- Son olarak, üretilen HTML içerik dizgesini
ChromePdfRenderer,RenderHtmlAsPdfveSaveAsyöntemlerini kullanarak bir PDF belgesine kaydedin.
Çıktı

Çıktıda bir filigran vardır ve geçerli bir lisansla IronPDF lisans sayfası'ndan kaldırılabilir.
IronPDF Lisansı
IronPDF kütüphanesi çalıştırmak için bir lisans gerektirir ve ürün lisans sayfasından alınabilir.
Anahtarı aşağıdaki appSettings.json dosyasına yapıştırın.
{
"IronPdf.License.LicenseKey": "The Key Goes Here"
}
Sonuç
C# LinkedList, eleman koleksiyonlarını yönetmek için esnek bir veri yapısı sağlayarak, varsayılan karma fonksiyonuna benzer şekilde etkili eklemeler ve silmeler yaparken dinamik boyutlandırmayı da destekler. Bağlı listeler, genellikle yığınlar, kuyruklar, sembol tabloları ve bellek yönetim sistemleri gibi çeşitli uygulamalar ve algoritmalarda kullanılır. Bağlı listelerin özelliklerini ve işlemlerini anlamak, verimli ve ölçeklenebilir yazılım çözümleri geliştirmek için gereklidir.
Özetle, bağlı listeler, dinamik veri yapıları ve sık ekleme/silmeler gibi belirli senaryolarda mükemmel performans gösterirken, sık rastgele erişim veya bellek kısıtlamalı ortamlara ihtiyaç duyan uygulamalar için en iyi seçenek olmayabilirler. Verinin özel gereksinimlerinin ve özelliklerinin dikkatlice değerlendirilmesi, eldeki görev için en uygun veri yapısının seçilmesine yardımcı olabilir.
Iron Software'den IronPDF kütüphanesi, geliştiricilerin PDF belgeleri oluşturup kolayca yönetmelerini sağlar, modern uygulamaları geliştirmek için ileri düzey beceriler kazandırır.
Sıkça Sorulan Sorular
C#'ta bağlı liste nedir?
C#'ta bağlı liste, düğümlerden oluşan lineer bir veri yapısıdır. Her düğüm veri içerir ve bir sonraki düğüme referans verir. Bu yapı, dizilerin aksine dinamik bellek tahsisine olanak tanır ve elemanların ardışık olmayan bellek konumlarında saklanmasını sağlar.
HTML'yi C#'de PDF'ye nasıl dönüştürebilirim?
HTML dizgilerini PDF'lere dönüştürmek için IronPDF'in RenderHtmlAsPdf metodunu kullanabilirsiniz. Ayrıca RenderHtmlFileAsPdf kullanarak HTML dosyalarını PDF'lere dönüştürmenize de olanak tanır.
C#'ta bağlı liste türleri nelerdir?
C#'ta, başlıca bağlı liste türleri tek bağlantılı listeler, çift bağlantılı listeler ve dairesel bağlı listeler olarak sınıflandırılır. Tek bağlantılı listeler, bir sonraki düğüme tek yönlü bir referansa sahipken, çift bağlantılı listeler hem bir sonraki hem de önceki düğümlere referanslara sahiptir ve dairesel bağlanan listeler son düğümün ilk düğüme dönmesini sağlar.
Bağlantılı listelerde uygulanabilecek temel işlemler nelerdir?
Bağlantılı listeler ekleme (yeni bir düğüm ekleme), silme (mevcut bir düğümü kaldırma), dolaşma (liste içinde gezinme) ve arama (verilerine göre bir düğüm bulma) gibi işlemleri destekler.
C#'ta nasıl bir bağlı liste uygularım?
C#'ta bağlı bir liste, System.Collections.Generic ad alanındaki LinkedList sınıfı kullanılarak uygulanabilir. Bu sınıf, listedeki düğümlerin eklenmesi, çıkarılması ve düzenlenmesi için yöntemler sağlar.
Bir PDF oluşturma kütüphanesi hangi özellikleri sağlar?
IronPDF gibi bir PDF oluşturma kütüphanesi HTML'den PDF'ye dönüşüm, metin çıkarma, belgeleri birleştirme ve ayrıştırma ve belge izinlerini ayarlama gibi özellikler sunar ve çeşitli .NET ortamlarıyla çalışır.
Bağlantılı listeler PDF oluşturma ile nasıl kullanılabilir?
Bağlantılı listeler, içeriklerin dinamik olarak saklanmasına ve düzenlenmesine olanak tanır; ardından bu içerikler IronPDF gibi bir kütüphane kullanılarak bir PDF belgesine dönüştürülebilir, içerik manipülasyonu ve çıktıyı kolaylaştırır.
Bağlantılı listeleri yazılım geliştirmede kullanmanın avantajları nelerdir?
Bağlantılı listeler, verimli ekleme ve silme işlemlerine, dinamik yeniden boyutlandırmaya olanak tanır ve yığınlar ve kuyruklar gibi dinamik veri yapılarının uygulanmasında faydalıdır. Özellikle sık sık değişiklik yapmanız gerektiğinde kullanışlıdırlar, ancak rastgele erişim yetenekleri yoktur.
Tek ve çift bağlantılı listeler arasındaki fark nedir?
Ana fark, tek bağlantılı listelerin tek yönlü dolaşıma izin veren, bir sonraki düğüme tek bir referansı olan düğümlere sahip olmasıdır. Çift bağlantılı listeler ise her iki yöne gitmeye imkan tanıyan hem bir sonraki hem de önceki düğümlere referansları vardır.
C#'ta bağlı liste verilerinden nasıl PDF oluşturabilirim?
Bağlı liste üzerinden gezerek veri toplayabilir ve ardından IronPDF API'sini kullanarak bu veriyi bir PDF belgesine dönüştürebilirsiniz. Bu, profesyonel PDF formatında yapılandırılmış içeriği dönüştürmek için HtmlToPdf gibi yöntemlerin kullanılması anlamına gelir.




