在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
链表是一种线性数据结构,由一系列节点(也可称为元素)组成。 与元素/节点存储在连续内存位置的数组不同,链表利用动态内存分配,允许元素/节点分散在整个内存中。
最简单的形式是,"链表 "由线性链接在一起的节点组成。 每个节点包含两个主要部分:
数据:存储在节点中的有效载荷。 根据实现情况,可以是任何数据类型,如整数、字符串、对象等。
下一个指针:参考资料(或指针)到序列中的下一个节点。 该指针指示链接列表中向前的节点的内存位置。
链表中的最后一个节点通常指向一个空引用,表示链表的结束。
单链表中的节点只有一个引用,通常指向序列中的下一个节点。 遍历列表仅限于朝一个方向移动,通常是从头部(初始节点)到尾巴(最后一个节点).
在双链表中,每个节点都包含两个引用:一个指向下一个节点,另一个指向序列中的上一个节点。 这种双向链接可实现正向和反向遍历。
在循环链表中,最后一个节点指向第一个节点,形成一个循环结构。 这种类型的链表可以使用单链节点或双链节点来实现。
插入:在列表的特定位置(如开头、结尾或中间)添加新节点。
删除:从列表中删除指定的对象节点,并相应调整相邻节点的指针。
遍历:遍历列表以访问或操作每个节点的数据。
在 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 页面、URL 和 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(毛伊岛).
为 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' 创建一个新的字符串链表<string>()
.
在链接列表和 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 文档,从而掌握开发现代应用程序的高级技能。