.net 数据结构与算法基础:泛型链表使用
2012-11-23 20:19
761 查看
链表
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必按顺序存储,链表在插入的时候可以达到O⑴的复杂度,比另一种线性表:顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O⑴。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(datafields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取[1]。链表有很多种不同的类型:单向链表,双向链表以及循环链表。链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。
C#泛型链表:
C#泛型链表使用需要实例化两个对象:节点和链接。其中节点存储两种类型:节点数值以及链接字段。链表采用的方式为双向链表,这样的数据结构大大提高了插入、删除操作的效率,C#中的ArrayList即使通过这种数据结构实现的。代码示例:
static void Main(string[] args){
LinkedListNode<string> nodes = new LinkedListNode<string>("GAO XIANG");
LinkedList<string> names = new LinkedList<string>();
names.AddFirst(nodes);
LinkedListNode<string> nodes1 = new LinkedListNode<string>("XU TIAN TIAN");
names.AddAfter(nodes,nodes1);
LinkedListNode<string> nodes2 = new LinkedListNode<string>("GAO TIAN TIAN");
names.AddLast(nodes2);
LinkedListNode<string> nodes3=names.First;
int i = 1;
while ((nodes3 != null))
{
Console.WriteLine();
Console.WriteLine("第"+(i++)+"个节点名称: "+nodes3.Value);
nodes3=nodes3.Next;
}
Console.ReadKey();
}
程序结果:
程序下载:http://download.csdn.net/detail/xiang__jiangsu/4803388
相关文章推荐
- .net 数据结构与算法基础:泛型编程、时间测试
- .net 数据结构与算法基础:图的操作
- .net 数据结构与算法基础:高级排序
- 郝斌数据结构 26 通过链表排序算法的演示 再次详细讨论到底什么是算法和泛型
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- .net 数据结构与算法基础:二叉树
- 【数据结构与算法基础】单链表及其应用基数排序 / Singly Linked List and radix sort
- .net 数据结构与算法基础:Hashtable
- 数据结构与算法-----堆栈-使用链表(链式结构)实现
- 数据结构基础算法-链表
- 算法与数据结构基础7:C++双链表的简单实现
- 【学习笔记】数据结构与算法基础学习:链表
- PJLIB库基础框架-数据结构之循环链表的使用
- 学点PYTHON基础的东东--数据结构,算法,设计模式---单向链表
- 数据结构基础算法-循环链表
- 【数据结构与算法】第三章 栈c实现,使用链表结构
- 数据结构与算法:链表基础
- php学习第一章:PHP基础语法(三)数据结构与算法:2、单向链表
- Java数据结构与算法---链表的实现