C# Bağlı Liste (Geliştiriciler için Nasıl Çalışır)
Bağlantılı liste, elemanlar olarak da adlandırılabilecek bir dizi düğümden oluşan doğrusal bir veri yapısıdır. Elemanların/düğümlerin ardışık bellek alanlarında depolandığı dizilerden farklı olarak, bağlı listeler dinamik bellek tahsisini kullanır, elemanların/düğümlerin bellekte dağılmasına izin verir.
En basit formunda, 'bağlı listeler' doğrusal olarak bir araya bağlı düğümlerden oluşur. Her düğüm iki ana parça içerir:
- Veri: Düğümde saklanan yük. Bu, uygulamaya bağlı olarak, tamsayılar, dizeler, nesneler vb. gibi herhangi bir veri türü olabilir.
- Sonraki İşaretçi: Dizideki bir sonraki düğüme referans (veya işaretçi). Bu işaretçi, bağlı listedeki bir sonraki düğümün bellekteki konumunu ileriye doğru gösterir.
Bağlı bir listedeki son düğüm genellikle listenin sonunu belirtmek için bir null referansı gösterir.
Bu makalede, C# dilindeki Bağlı listeye detaylı bir şekilde bakacağız ve ayrıca IronPDF kütüphanesini, Iron Software ürününü keşfedeceğiz.
Bağlı Liste Türleri
1. Tek Yönlü Bağlı Liste
Tek yönlü bağlı listede tek bir referansı olan, tipik olarak dizideki bir sonraki düğüme işaret eden bir düğüm bulunur. Listeyi geçmek, baştan (ilk düğüm) sonuna (son düğüm) genellikle tek bir yönde hareket etmekle sınırlıdır.
2. Çift Yönlü Bağlı Liste
Çift yönlü bir bağlı listede her düğüm iki referans içerir: biri bir sonraki düğüme, biri de dizideki önceki düğüme işaret eder. Bu iki yönlü bağlantı, hem ileriye hem de geriye doğru geçiş yapmayı mümkün kılar.
3. Dairesel Bağlı Liste
Dairesel bir bağlı listede son düğüm, ilk düğüme yeniden yönlendirerek dairesel bir yapı oluşturur. Bu tür bir bağlı liste tek yönlü veya çift yönlü düğümler kullanılarak uygulanabilir.
Bağlı Listeler Üzerinde Temel İşlemler
- Ekleme: Belirli bir konumda, örneğin başlangıç, son, ya da ortada yeni bir düğüm eklemek.
- Silme: Listede belirtilen bir nesne düğümünü kaldırmak ve komşu düğümlerin işaretçilerini buna göre ayarlamak.
- Geçiş: Her düğümün verilerine erişmek veya bunları manipüle etmek için liste boyunca gezinmek.
- Arama: Belirtilen veri değerine göre listede belirli bir düğümü bulmak.
Linked List in C
C# içinde, .NET 8.0 sürümünü görüntülemek için LinkedList sınıfını System.Collections.Generic ad alanından kullanarak bir bağlı listeyi uygulayabilirsiniz. İşte tüm temel işlemler için bir örnek:
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 tamsayı türünde yeni bir bağlı liste oluşturun.- Belirtilen değer nesnelerini bağlı listeye ekleyin.
foreachdöngüsünü kullanarak bağlı listenin elemanlarını dolaşın ve yazdırın.- Bağlı listede bir elemanı bulma/arama.
FindveAddAfteryöntemlerini kullanarak belirtilen bir düğümde bir eleman ekleyin.Removeyöntemini kullanarak bağlı listeden mevcut bir düğümü kaldırın.
Çıktı

IronPDF Tanıtımı
IronPDF hakkında daha fazla bilgi keşfedin Iron Software tarafından geliştirilen ve bakım yapılan güçlü bir C# PDF kütüphanesidir. .NET projeleri içinde PDF belgeleri oluşturma, düzenleme ve içerik çıkarma için kapsamlı özellikler sunar.
IronPDF Hakkında Temel Noktalar
HTML'den PDF'ye Dönüşüm
IronPDF, HTML içeriğini PDF formatına dönüştürmenizi sağlar. URL'leri ve HTML dizelerini kolayca PDF'lere dönüştürebilirsiniz.
Zengin API
Kütüphane, geliştiricilerin doğrudan HTML'den profesyonel kalitede PDF'ler oluşturmalarını sağlayan kullanıcı dostu bir API sunar. Faturalar, raporlar veya diğer belgeleri oluşturmanız gerekip gerekmediğine bakılmaksızın, IronPDF süreci basitleştirir.
Çapraz Platform Desteği
IronPDF, .NET Core, .NET Standard ve .NET Framework dahil farklı .NET ortamlarıyla uyumludur. Windows, Linux ve macOS platformlarında çalışır.
Çok Yönlülük
IronPDF, web uygulamaları (Blazor ve WebForms), masaüstü uygulamaları (WPF ve MAUI), ve konsol uygulamaları gibi farklı proje türlerini destekler.
İçerik Kaynakları
HTML dosyaları, Blazor Sunucusu (VuLoad), CSHTML (MVC ve Blazor Server), ASPX (WebForms) ve XAML (MAUI) dahil çeşitli içerik kaynaklarından PDF oluşturabilirsiniz.
Ekstra Özellikler
- PDF'lere başlıklar ve altbilgiler ekleyin.
- PDF sayfalarını birleştirin, bölün, ekleyin, kopyalayın ve silin.
- Şifreler, izinler ve dijital imzalar ayarlayın.
- Çoklu işleme ve asenkron destekle performansı optimize edin.
Uyumluluk
IronPDF, 1.2'den 1.7'ye kadar sürümler, PDF/UA ve PDF/A dahil olmak üzere PDF standartlarına uygun davranır. UTF-8 karakter kodlama, temel URL'ler ve varlık kodlamasını da destekler.
LinkedList Kullanarak PDF Belgesi Oluştur
Şimdi IronPDF kullanarak bir PDF belgesi oluşturalım ve aynı zamanda LinkedList dizelerinin kullanımını gösterelim.
Başlangıç olarak Visual Studio'yu açarak ve aşağıdaki gibi proje şablonlarından bir konsol uygulaması seçerek başlayın.

Bir proje adı ve konumu sağlayın.

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

Yukarıdaki gibi Visual Studio Paket yöneticisinden IronPDF'yi kurun.

Ya da aşağıdaki komut satırı kullanılarak kurulur.
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ı
- Öncelikle, içeriği bir içerik dize nesnesi kullanarak PDF için oluşturma ile başlıyoruz. İçerik bir HTML dizesi olarak oluşturulur.
new LinkedList<string>()ile yeni bir dizeler bağlı listesi oluşturun.- Bağlı listeye elemanlar ekleyin ve ayrıca PDF içerik dizesine bilgi ekleyin.
- Bağlı liste elemanlarını yazdırın ve PDF içeriğine ekleyin.
AddAfteryöntemini kullanarak belirli bir konumda bir eleman ekleyin; içeriği güncelleyin ve son listeyi yazdırın.Removeyöntemini kullanarak bağlı listeden bir eleman kaldırın, içeriği güncelleyin ve sonuç listesi yazdırın.- Son olarak, oluşturulan HTML içerik dizgisini
ChromePdfRenderer,RenderHtmlAsPdfveSaveAsyöntemlerini kullanarak bir PDF belgesine kaydedin.
Çıktı

Çıktıda bir filigran vardır, geçerli bir lisans kullanarak IronPDF lisans sayfasından kaldırılabilir.
IronPDF Lisansı
IronPDF kütüphanesi çalışması için lisans gerektirir, ve ürün lisans sayfasından elde edilebilir.
Aşağıda appSettings.json dosyasına anahtarı yapıştırın.
{
"IronPdf.License.LicenseKey": "The Key Goes Here"
}
Sonuç
C# LinkedList, elemanların koleksiyonlarını yönetmek için çok yönlü bir veri yapısı sağlar, varsayılan karma fonksiyonuna benzer şekilde dinamik yeniden boyutlandırmayı desteklerken etkin ekleme ve silme işlemleri sunar. Bağlı listeler, yığınlar, kuyruklar, sembol tabloları ve bellek yönetim sistemleri gibi çeşitli uygulamalarda ve algoritmalarda yaygın olarak kullanılır. Bağlı listelerin özelliklerini ve işlemlerini anlamak, verimli ve ölçeklenebilir yazılım çözümleri oluşturmak için gereklidir.
Özetlemek gerekirse, bağlı listeler dinamik veri yapıları ve sık ekleme/kaldırma gerektiren senaryolarda mükemmel olsalar da, sık rastgele erişim gerektiren veya belleği sınırlı ortamlardaki uygulamalar için en iyi seçim olmayabilirler. Verilerin belirli gereksinimlerini ve özelliklerini dikkatlice değerlendirerek, elinizdeki görev için en uygun veri yapısının seçilmesini yönlendirebilir.
Iron Software'den IronPDF kütüphanesi, geliştiricilerin PDF belgelerini zahmetsizce oluşturmalarını ve düzenlemelerini sağlar, modern uygulamaları geliştirmek için ileri becerileri mümkün kılar.
Sıkça Sorulan Sorular
C# dilinde bağlantılı liste nedir?
C# dilinde bir bağlantılı liste, düğümlerden oluşan bir doğrusal veri yapısıdır ve her düğüm veri ve bir sonraki düğüme referans içerir. Bu yapı, dizilerden farklı olarak, elemanların ardışık olmayan bellek konumlarında saklanmasına olanak tanıyan dinamik bellek tahsisini destekler.
HTML'yi C# içerisinde PDF'ye nasıl dönüştürebilirim?
HTML dizelerini 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ürmenizi sağlar.
C# dilinde bağlantılı liste türleri nelerdir?
C# dilinde ana bağlantılı liste türleri tek yönlü bağlantılı listeler, çift yönlü bağlantılı listeler ve döngüsel bağlantılı listelerdir. Tek yönlü bağlantılı listeler, bir sonraki düğüme tek referansı olan düğümlere sahipken, çift yönlü bağlantılı listeler hem bir sonraki hem de önceki düğümlere referanslara sahip olur ve döngüsel bağlantılı listelerde ise son düğüm ilk düğüme geri döner.
Bağlantılı listelerde yapılabilecek temel işlemler nelerdir?
Bağlantılı listeler ekleme (yeni bir düğüm ekleme), silme (mevcut bir düğüm silme), dolaşma (listeyi yineleme) ve arama (veri bazında bir düğüm bulma) gibi işlemleri destekler.
C# dilinde bağlantılı liste nasıl uygulanır?
Bağlantılı liste, System.Collections.Generic isim alanındaki LinkedList sınıfı kullanılarak C# dilinde uygulanabilir, bu sınıf liste içindeki düğümleri eklemek, kaldırmak ve manipüle etmek için yöntemler sağlar.
Bir PDF oluşturma kütüphanesi hangi özellikleri sunar?
IronPDF gibi bir PDF oluşturma kütüphanesi, HTML'den PDF'ye dönüştürme, metin çıkarımı, belge birleştirme ve ayırma ve belge izinlerini ayarlama gibi özellikleri sunar, bunların hepsi çeşitli .NET ortamlarında mevcuttur.
Bağlantılı listeler PDF oluşturma ile nasıl kullanılabilir?
Bağlantılı listeler içeriği dinamik olarak depolayabilir ve organize edebilir, daha sonra bir kütüphane gibi IronPDF kullanılarak bir PDF belgesine dönüştürülebilir, bu da içerik manipülasyonu ve çıktısını kolaylaştırır.
Yazılım geliştirmede bağlantılı listelerin avantajları nelerdir?
Bağlantılı listeler verimli ekleme ve silme işlemleri, dinamik boyutlandırma sunar ve yığınlar ve kuyruklar gibi dinamik veri yapılarının uygulanmasında faydalıdır. Sık değişiklikler gerektiğinde özellikle faydalıdır, ancak rastgele erişim yeteneklerinden yoksundur.
Tek yönlü ve çift yönlü bağlantılı listeler arasındaki fark nedir?
Ana fark, tek yönlü bağlantılı listelerde düğümlerin bir sonraki düğüme tek referans içermesi ve tek yönlü dolaşmaya izin vermesi, oysa çift yönlü bağlantılı listelerde, hem bir sonraki hem de önceki düğümlere referans içeren düğümler olması ve çift yönlü dolaşmaya izin vermesidir.
C# dilinde bağlantılı liste verilerinden PDF nasıl oluşturabilirim?
Bağlantılı listeyi yineleyerek verileri toplayabilir ve ardından bu verileri bir PDF belgesine dönüştürmek için IronPDF'in API'sini kullanabilirsiniz. Bu, yapılandırılmış içeriği profesyonel bir PDF formatına dönüştürmek için HtmlToPdf gibi yöntemlerden yararlanmayı içerir.




