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

全部博文(112)

文章存档

2011年(22)

2010年(28)

2009年(21)

2008年(41)

分类:

2009-12-29 02:15:38

在链表中插入元素


  public void InsertNode(Object newItem, Object after)
        {
            Node current = new Node();
            Node newNode = new Node(newItem);
            current = this.Find(after);
            if (current != null)
            {
                newNode.Link = current.Link;
                current.Link = newNode;              
            }
        }

新建一个当前的节点,再将要插入值构造成节点,然后通过Find()方法,找到那个节点(我们要把新节点,放到哪个节点后面的那个节点),再运行后,检查current是否为空,如果不为空说明,已经找到了,然后,
newNode.Link = current.Link;
把找到的这个节点的link,给这个新值的link(这个步骤是把原来链表上,原来指向的下一个节点的指针,然后赋给新节点的link,这样,新节点,就可以指向原来老节点的下一个节点了)

current.Link = newNode; 
这个就是把当前找到的这个节点的link指向了新的节点

这样,这个过程就是先打掉原来指向后面的链接,然后把原来的link给新节点的link,然后把新的节点给原来那个节点,就形成了插入一个新节点了!


private Node Find(Object item)
        {
            Node current = new Node();
            current = Header;
            while (item != current.Element)
            {
                current = current.Link; 
            }
            return current;
        }




调用代码如下

   Node firstNode = new Node("Micheal");
            Node SecondNode = new Node("WeiWei");
            Node thirdNode = new Node("58");
            firstNode.Link = SecondNode;
            SecondNode.Link = thirdNode;
            thirdNode.Link = null;
            LinkedList myList = new LinkedList();

            myList.Header.Link = firstNode;
            myList.InsertNode("Scofield", "Micheal");
            lblLinkedList.Text = myList.PrintList();
阅读(423) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~