• C#链表


    C#中实现链表,写出来练习下。

    首先实现链表中的节点:

      class LinkListNode
    {
    object value;//节点中存放的数据

    public object Value
    {
    get { return this.value; }
    set { this.value = value; }
    }
    public LinkListNode(object value)
    {
    this.value = value;
    }
    LinkListNode nodeNext;//下一个节点

    internal LinkListNode NodeNext
    {
    get { return nodeNext; }
    set { nodeNext = value; }
    }
    LinkListNode nodePrev;//上一个

    internal LinkListNode NodePrev
    {
    get { return nodePrev; }
    set { nodePrev = value; }
    }
    }

    实现链表

        class LinkList:IEnumerable
    {
    LinkListNode frist;

    internal LinkListNode Frist
    {
    get { return frist; }
    set { frist = value; }
    }
    LinkListNode last;

    internal LinkListNode Last
    {
    get { return last; }
    set { last = value; }
    }

    public LinkListNode AddNode(object node)
    {
    LinkListNode newNode = new LinkListNode(node);
    //如果链表中没有节点,则把新添加的节点标记为链表的第一个元素
    //然后把新增加的节点的指向下一个的属性设为链表中的最后一个元素的标记
    //然后让最后一个和第一个的指向同一个位置
    if (frist == null)
    {
    frist = newNode;
    newNode.NodePrev = last;
    last = frist;
    }
    //如果是链表中有元素,首先把最后一个元素给中间变量TMP
    //然后把最后一个元素的下一个指向新添加的元素
    //接着把链表中最后一个得标记指向新添加的元素
    //最后把新添加的元素的上一个元素指定为中间变量TMP
    else
    {
    LinkListNode tmp = last;
    last.NodeNext = newNode;
    last = newNode;
    newNode.NodePrev = tmp;
    }
    return newNode;
    }

    public IEnumerator GetEnumerator()
    {
    LinkListNode cou = frist;
    while (cou != null)
    {
    yield return cou.Value;
    cou = cou.NodeNext;
    }
    }
    }

    Main方法中来实验下

     static void Main(string[] args)
    {
    LinkList list = new LinkList();
    list.AddNode(1);
    list.AddNode(2);
    list.AddNode(3);
    list.AddNode(4);
    foreach (var i in list)
    {
    Console.WriteLine(i.ToString());
    }
    }




  • 相关阅读:
    Grodno 2015 (Urozero May 2015 Day 5) D Triangles
    Flea Circus(Project Euler 213)
    Prime triplets (Project Euler 196)
    ACM 博弈(难)题练习 (第二弹)
    Crosses Puzzles zoj 4018 (zju校赛)
    Petrozavodsk Summer-2015. Ivan Smirnov Contest 1 B Bloom
    ACM 博弈(难)题练习 (第一弹)
    2017 ACM区域赛(南宁站) 参赛流水账
    2017 CCPC 杭州 流水账
    2017 ACM区域赛(西安) 参赛流水账
  • 原文地址:https://www.cnblogs.com/yyzq/p/2406527.html
Copyright © 2020-2023  润新知