C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  链表是一种线性数据结构,使用它能动态的存储一种数据结构。链表是n个数据元素的有限序列,其元素需要自己定义,既可以是一个整数或一个字符串,也可以是一个复杂的记录类型。

  链表是一种重要的数据结构,该结构由节点组成。每个节点包含两部分数据,第一部分是节点本身的数据,第二部分是指向下一节点的指针。对于单向链表,链表中存在两个特殊的节点,分别为“头节点”和“尾节点”。头节点本身没有数据,只存储下一个节点的指针,尾节点只存储数据。

  下面给出一个简单的节点示例:

    public class ListNode
    {public ListNode Next;
        public int Value;

        public ListNode(int NewValue)
        {
            Value = NewValue;
        }
    }

  其中,私有Value用于存储节点本身的数据,Next用于存储下一个节点的指针,Previous用于存储上一个节点的指针。对于链表的操作,无非是进行节点的查找、插入和删除操作。

  1、查找节点

  在进行节点查找时,通常根据节点的数据查找节点。要实现节点的查找,首先需要解决的问题就是遍历链表中的所有节点。可以从链表头节点开始,利用循环的方式向下查找,如果当前节点指向的下一个节点不为空,则将下一个节点设置为当前节点。

  2、插入节点

  插入节点需要考虑两种情况。第一种情况是在链表尾节点处插入节点,这种情况比较简单,只要将当前尾节点的Next指向新插入的节点就可以了。第二种情况是在链表的中间位置插入节点,首先需要确定在哪个节点后插入节点。然后将当前节点的下一个节点设为要插入节点,然后将要插入节点的Next设为原来的下一个。

  3、删除节点

  删除节点与插入节点类似,也要考虑两种情况,删除尾节点是最简单的,找到尾节点之前的一个节点,将该节点指向的下一个节点设置为空,然后删除尾节点。第二种情况是删除中间节点,首先需要找到当前节点的前一个节点,并定义一个临时节点PriorNode进行记录,然后再定义一个临时节点TempNode记录当前节点的下一个节点,最后将PriorNode的下一个节点指向TempNode,并释放当前节点。

 

 

 

 

 

 

 

posted on 2013-05-15 23:27  逆心  阅读(668)  评论(0编辑  收藏  举报