招生热线
0755-86191118 0755-86191118
我的位置: 首页 > 学习专区 > 安卓技术 > 单向链表

单向链表

2013-03-01 15:59:06
来源:
[导读] 单向链表是一种简单的线型存储结构,其特点是只能从一个前驱节点找到一个后继节点,没有后继节点的节点称为头节点,没有后继的节点称为尾节

单向链表是一种简单的线型存储结构,其特点是只能从一个前驱节点找到一个后继节点,没有后继节点的节点称为头节点,没有后继的节点称为尾节点。示例如下图:

从上图来看链表是存在逻辑关系,但在物理内存中它们的存储是没有前后关系,而是分布在不同的位置。如果前节点需要找到后继节点,那么前节点就需要从本节点中找到后断节点的地址,也就是说每个链表节点必须存储下个节点的引用。链表在插入的时候可以达到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;
    }

}

【北大青鸟深圳嘉华】

评论
相关文章