
C# Bağlı Liste (Geliştiriciler İç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}");
}
}
}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
' 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(vbCrLf & "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(vbCrLf & $"Number of Linked List elements: {linkedList.Count}")
Console.WriteLine(vbCrLf & "Linked List elements after insertion:")
For Each item In linkedList
Console.WriteLine(item)
Next
' Remove an existing node from the linked list
linkedList.Remove(30)
Console.WriteLine(vbCrLf & "Linked List elements after removal:")
For Each item In linkedList
Console.WriteLine(item)
Next
Console.WriteLine(vbCrLf & $"Number of Linked List elements: {linkedList.Count}")
End Sub
End Class
End NamespaceKod 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.
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");
}
}
}Imports System
Imports System.Collections.Generic
Imports IronPdf
Namespace CsharpSamples
Public Class Program
Public Shared Sub Main()
Dim content As String = "<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
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(vbCrLf & "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
content += "<h2>Remove an element from the linked list</h2>"
linkedList.Remove("Orange")
content += "<p>Remove Orange from linked list</p>"
Console.WriteLine(vbCrLf & "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
' 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 NamespaceKod 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.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


