Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483063
  • 博文数量: 112
  • 博客积分: 5696
  • 博客等级: 大校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 09:58
文章分类

全部博文(112)

文章存档

2011年(22)

2010年(28)

2009年(21)

2008年(41)

分类:

2009-12-28 22:59:42

链表
1 先建立一个 节点类(Node),里面有一个存放一个存放数据的字段,当然还要有一个指向下一个(或另外的,前一个)节点的指针

定义类如下:
public class Node
    {
        public Object Element;
        public Node Link;

        public Node()
        {
            this.Element = null;
            this.Link = null;
        }

        public Node(Object element)
        {
            this.Element = element;
            this.Link = null;
        }
    }

有了节点类,开始设计链表类了
一开始默认的构造函数,元素和下一个节点都设置为null,然后是有一个object的类型参数的构造函数!

第一个介绍的方法是PrintList(),也就是打印出这个链表上的元素

初始化一个节点,命名为curren,意思就是当前节点的意思,由于是刚刚new的,所以这个节点上null值,然后把一个已知的链表 头 节点给他,从而current获得了已知列表的头,然后逐一遍历这个链表的每个值,知道最后一个节点的link为null,由于链表的结构,最后一个节点的下一个节点一定是null,表示链表到头了,所以,有如下代码:

  public string PrintList()
        {
            Node current = new Node();
            current = this.Header;
            string result = String.Format("链表中的元素是 | ");
            while (current.Link != null)
            {
                result += " - " + current.Link.Element.ToString();
                current = current.Link;
            }

            return result;
        }

其中:
 while (current.Link != null)
 {
       result += " - " + current.Link.Element.ToString();
       current = current.Link;
 }
while条件是 只要链表上的节点的下一个节点不是null ,就进入方法体,读出这个节点的元素,然后,把当前找到的这个节点再给这个current的节点,以此类推,知道整个链表全部被循环完!

这是实际调用linkedlist类上的代码
 Node firstNode = new Node("Micheal");
 Node SecondNode = new Node("Lucifer");
 Node thirdNode = new Node("58");
 firstNode.Link = SecondNode;
 SecondNode.Link = thirdNode;
 thirdNode.Link = null;
 LinkedList myList = new LinkedList();

 myList.Header.Link = firstNode;

 lblLinkedList.Text = myList.PrintList();


阅读(561) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~