了解集合本质必须要知晓的概念01-链表

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

了解集合本质必须要知晓的概念01-链表如果想对集合(系列)有本质的了解,链表是一个必须了解的概念。本篇主要包括:

● 链表的由来和定义● 创建一个单向链表● 其它链表

链表的由来和定义

在现实生活中,我们把不同的商品放在一个购物车中。而在面向对象的世界里,有时候,也需要把不同类型的数据放到一起,组成一个集合。集合中的元素并不是彼此孤立的,在C#中,如何表达集合元素间的关系呢?

借助"自引用类"可以确立集合元素间的关系。比如有这样一个自引用类:

public class Node

{

public int Data{get;set;}

public Node Next{get;set;}

public Node(int dataValue)

{}

}

Node类的最大特点是:存在一个Node类型的属性,这个属性指向Node的另一个实例,Next属性也称为"引用链"。放到集合的场景中来说就是:把多个Node实例放到一个集合中,每一个Node实例包含一个Next属性指向下一个Node实例。而该集合中的最后一个Node实例会指向null。用图表示就是:

链表就是自引用类对象的线性集合,即序列。

由于每个自引用对象是由引用链链接起来,所以叫链表。堆栈与队列是约束版的链表,而二叉查找数是非线性数据结构。

链表的节点或元素虽然在逻辑上是连续的、线性的,当其内存不是连续存储的;数组元素在内存中是连续的,所以我们才可以通过索引来访问数组元素。

创建一个单向链表

首先创建一个节点,是一个自引用类:

namespace LinkedListLibrary

{

public class ListNode

{

//当前节点对象

public object Data { get; PRivate set; }

//Next属性也称为链,指向另一个ListNode对象实例,这样就把2个ListNode对象实例链接起来了

public ListNode Next { get; set; }

public ListNode(object dataValue): this(dataValue, null)

{

}

public ListNode(object dataValue, ListNode nextNode)

{

Data = dataValue;

Next = nextNode;

}

}

}

再模拟一个链表,如下:

namespace LinkedListLibrary

{

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航