在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
鏈結串列是一種由一系列節點組成的線性資料結構,這些節點也可以稱為元素。 與儲存在連續記憶體位置中的陣列不同,鏈結串列使用動態記憶體配置,允許元素/節點分散於記憶體各處。
在其最簡單的形式中,「鏈結串列」由線性連接在一起的節點組成。 每個節點包含兩個主要部分:
數據:存儲在節點中的有效載荷。 這可以是任何數據類型,具體取決於實現,例如整數、字串、物件等。
Next Pointer: 引用(或指針)到序列中的下一個節點。 此指针指示链表中下一个节点的位置。
鏈結串列中的最後一個節點通常指向一個空引用,表示串列的結束。
在本文中,我們將詳細研究 C# 中的鏈結串列並探索IronPDF 庫,來自 IronPDF 的 PDF 生成工具Iron Software.
單向鏈結串列的節點只有一個引用,通常指向序列中的下一個節點。 遍歷該列表僅限於朝一個方向移動,通常是從頭部開始。(初始節點)到尾部(最終節點).
在雙向鏈結串列中,每個節點包含兩個參考:一個指向下一個節點,另一個指向序列中的前一個節點。 這種雙向連結使得能在前向和後向兩個方向進行遍歷。
在一個圓形鏈結串列中,最後一個節點指向第一個節點,形成一個圓形結構。 這種類型的鏈結串列可以使用單向或雙向鏈結節點來實作。
插入:在特定位置(如開頭、結尾或中間)將新節點添加到列表中。
刪除:從列表中移除指定的物件節點,並相應調整相鄰節點的指標。
遍歷:迭代訪問或操作列表中每個節點的數據。
在 C# 中,您可以使用鏈結串列來實現連結串列
來自 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 which create objects from node class
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);
}
Console.WriteLine($"Number of Linked List elements:{linkedList.Count}"); // use count property to display length
// Find/Search Element in Linked List
Console.WriteLine("\nFind/Search Element Linked List elements: 30");
var foundNode = linkedList.Find(30);// method returns the node
Console.WriteLine($"Found Value:{foundNode.Value}, Next Element:{foundNode.Next.Value}, Previous Element:{foundNode.Previous.Value}"); // prints next node, previous node
// Insert an element at a specified node
LinkedListNode<int> current = linkedList.Find(20);
linkedList.AddAfter(current, 25);
Console.WriteLine($"\nNumber of Linked List elements:{linkedList.Count}"); // use count property to display length
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); // remove current node
Console.WriteLine("\nLinked List elements after removal:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
Console.WriteLine($"\nNumber of Linked List elements:{linkedList.Count}"); // use count property to display length
}
}
}
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 which create objects from node class
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);
}
Console.WriteLine($"Number of Linked List elements:{linkedList.Count}"); // use count property to display length
// Find/Search Element in Linked List
Console.WriteLine("\nFind/Search Element Linked List elements: 30");
var foundNode = linkedList.Find(30);// method returns the node
Console.WriteLine($"Found Value:{foundNode.Value}, Next Element:{foundNode.Next.Value}, Previous Element:{foundNode.Previous.Value}"); // prints next node, previous node
// Insert an element at a specified node
LinkedListNode<int> current = linkedList.Find(20);
linkedList.AddAfter(current, 25);
Console.WriteLine($"\nNumber of Linked List elements:{linkedList.Count}"); // use count property to display length
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); // remove current node
Console.WriteLine("\nLinked List elements after removal:");
foreach (var item in linkedList)
{
Console.WriteLine(item);
}
Console.WriteLine($"\nNumber of Linked List elements:{linkedList.Count}"); // use count property to display length
}
}
}
Imports Microsoft.VisualBasic
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 which create objects from node class
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
Console.WriteLine($"Number of Linked List elements:{linkedList.Count}") ' use count property to display length
' Find/Search Element in Linked List
Console.WriteLine(vbLf & "Find/Search Element Linked List elements: 30")
Dim foundNode = linkedList.Find(30) ' method returns the node
Console.WriteLine($"Found Value:{foundNode.Value}, Next Element:{foundNode.Next.Value}, Previous Element:{foundNode.Previous.Value}") ' prints next node, previous node
' Insert an element at a specified node
Dim current As LinkedListNode(Of Integer) = linkedList.Find(20)
linkedList.AddAfter(current, 25)
Console.WriteLine($vbLf & "Number of Linked List elements:{linkedList.Count}") ' use count property to display length
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) ' remove current node
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}") ' use count property to display length
End Sub
End Class
End Namespace
使用新的 LinkedList
建立一個整數的鏈結串列
將額外指定的值物件添加到鏈結串列中。
使用 foreach
迴圈遍歷並列印鏈結串列的元素。
在鏈結串列中查找/搜索元素。
使用 Find
和 AddAfter
方法在指定的節點插入一個元素。
了解更多關於IronPDF的信息是由Iron Software開發和維護的強大C# PDF庫。 它為 .NET 專案提供了一整套功能,用於創建、編輯和提取 PDF 文件內容。
IronPDF允許您將HTML內容轉換為PDF格式。 您可以輕鬆地將 HTML 頁面、網址和 HTML 字串轉換為 PDF。
該庫提供了一個用戶友好的 API,讓開發者能直接從 HTML 生成專業品質的 PDF。 無論您需要創建發票、報告或其他文件,IronPDF 都能簡化過程。
IronPDF 兼容多種 .NET 環境,包括 .NET Core、.NET Standard 和 .NET Framework。 它可在 Windows、Linux 和 macOS 平台上運行。
IronPDF 支援不同的專案類型,例如網路應用程式(Blazor和WebForms)桌面應用程式(WPF 和 MAUI),和控制台應用程式。
您可以從各種內容來源生成 PDF,包括 HTML 文件和 Razor 視圖。(Blazor 伺服器), CSHTML(MVC 和 Razor), ASPX(網頁表單)和XAML(MAUI).
將頁首和頁尾新增至 PDF。
合併、分割、添加、複製和刪除 PDF 頁面。
設置密碼、權限和數位簽章。
IronPDF 遵循 PDF 標準,包括版本 1.2 到 1.7、PDF/UA 和 PDF/A。 它還支援 UTF-8 字元編碼、基礎 URL 和資產編碼。
LinkedList
生成 PDF 文件現在讓我們使用IronPDF創建一個PDF文件,並演示LinkedList
字串的使用。
首先,開啟 Visual Studio,並從下列的專案範本中選擇來建立一個主控台應用程式。
提供專案名稱和位置。
選擇所需的 .NET 版本。
從 Visual Studio 套件管理器安裝 IronPDF,如下所示。
或者可以使用以下命令行安裝。
dotnet add package IronPdf --version 2024.4.2
加入以下程式碼。
using 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></p>";
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>";
// Print the elements of the linked list
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>";
// Insert an element at a specific position
LinkedListNode<string> node = linkedList.Find("Banana");
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>";
// Remove an element from the linked list
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 Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf(content);
// Save to a file or Stream
pdf.SaveAs("AwesomeIronOutput.pdf");
}
}
using 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></p>";
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>";
// Print the elements of the linked list
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>";
// Insert an element at a specific position
LinkedListNode<string> node = linkedList.Find("Banana");
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>";
// Remove an element from the linked list
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 Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from HTML string
var pdf = renderer.RenderHtmlAsPdf(content);
// Save to a file or Stream
pdf.SaveAs("AwesomeIronOutput.pdf");
}
}
Imports Microsoft.VisualBasic
Imports 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></p>"
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>"
' Print the elements of the linked list
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>"
' Insert an element at a specific position
Dim node As LinkedListNode(Of String) = linkedList.Find("Banana")
linkedList.AddAfter(node, "Mango")
content &= "<p>Find Banana and insert Mango After</p>"
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>"
' Remove an element from the linked list
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 Renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from HTML string
Dim pdf = renderer.RenderHtmlAsPdf(content)
' Save to a file or Stream
pdf.SaveAs("AwesomeIronOutput.pdf")
End Sub
End Class
首先,我們透過使用一個內容字串物件來創建 PDF 的內容。 內容是以 HTML 字串形式創建的。
使用新的 LinkedList
創建一個新的字符串鏈結串列
將元素添加到鏈結串列並添加到 PDF 內容字串。
列印鏈結串列的元素。
使用 AddAfter
方法在特定位置插入元素並打印結果列表。
使用 Remove 方法從鏈結串列中移除一個元素,然後列印結果串列。
ChromePdfRenderer
、RenderHtmlAsPdf
和 SaveAs
方法將生成的 HTML 內容字串保存為 PDF 文件。輸出有水印,可以使用有效的許可證移除。IronPDF 授權頁面.
這IronPDF 庫需要許可證才能運行,可以從中獲得產品授權頁面.
在下面的 appSettings.json 文件中粘貼密鑰。
{
"IronPdf.License.LicenseKey" = "The Key Goes Here"
}
C# LinkedList
提供了一個多功能的數據結構來管理元素集合,提供高效的插入和刪除,同時可以像默認的哈希函數一樣進行動態調整大小。 鏈結串列通常用於各種應用和演算法中,例如實現堆疊、佇列、符號表和記憶體管理系統。 了解鏈結串列的特性和操作對於構建高效且可擴展的軟體解決方案至關重要。
總之,雖然鏈結串列在某些情況下表現優異,如動態資料結構和頻繁的插入/刪除操作,但對於需要頻繁隨機訪問或面臨記憶體限制環境的應用程式,它們可能不是最佳選擇。 對於數據的具體需求和特徵的仔細考慮,可以引導選擇最適合當前任務的數據結構。
Iron Software 的 IronPDF 程式庫使開發人員能夠輕鬆地創建和操作 PDF 文件,從而具備開發現代應用程式的高級技能。