单向链表是一种简单的线型存储结构,其特点是只能从一个前驱节点找到一个后继节点,没有后继节点的节点称为头节点,没有后继的节点称为尾节点。示例如下图:
从上图来看链表是存在逻辑关系,但在物理内存中它们的存储是没有前后关系,而是分布在不同的位置。如果前节点需要找到后继节点,那么前节点就需要从本节点中找到后断节点的地址,也就是说每个链表节点必须存储下个节点的引用。链表在插入的时候可以达到O⑴的复杂度,比另一种线性表:顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O⑴。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
创建单向链表的算法代码如下:
1. 链表节点类:
2. 链表头节点引用、当前节点引用:
3. 链表创建法算:
4. 打印链表:
完整源代码如下:
using System; using System.Text;
namespace LB
{
class Program
{
static void Main(string[] args){
Node head = null;
Node now = null;
do{
Node temp = new Node();
Console.Write("请输入数据:");
temp.data = Console.ReadLine();
if (head != null){
now.next = temp;
now = now.next;
}
else
{
head = temp;
now = head;
}
Console.Write("输入n退出循环:");
} while (Console.ReadLine() != "n");
Node tmp = head;
while (tmp != null)
{
Console.WriteLine(tmp.data);
tmp = tmp.next;
}
}
}
class Node
{
public object data;
public Node next;
}
}
【北大青鸟深圳嘉华】