• 单链表的思考


    我首先用list实现一个单链表

     class nodes
        {
            private string value;
            private nodes node;
            string result = "";
            public nodes(string value):this(value,null)
            {
                this.value = value;
            }
    
            public nodes(string value,nodes node)
            {
                this.value = value;
                this.node = node;
            }
    
            public override string ToString()
            {
                return value.ToString()+(node==null?"":node.ToString());
            }
          
        }
    
     static void Main(string[] args)
            {
                //单链表
             nodes n1 = new nodes("1");
                nodes n2 = new nodes("2", n1);
                nodes n3 = new nodes("3", n2);
    
                Console.WriteLine(n3);
                Console.ReadKey();
            }
    
    结果:321 ok
    当然我们也可以用范型!将Node改为Node<T>即可, nodes n1 = new nodes("1");也改为 nodes<char> n1 = new nodes<char>("1");

      现在的问题是:上面的代码我只能传同一种类型的值,要是我想传不同类型的值改怎么办呢!

       显然我们可以通过 ,private object value;将所有输入的值都设成object类型。

    这种方法可以,但是难免会带来不断的装箱和拆箱!

    internal class baseNode
        {
            protected baseNode bNode;
            public baseNode(baseNode bNode)
            {
               this.bNode = bNode;
            }
        }
    
        class childNode<T>:baseNode
        {
            T value;
            
            public childNode(T value):this(value,null){}
    
            public childNode(T value,baseNode bnode): base(bnode)
            {
                this.value = value;
            }
    
            public override string ToString()
            {
                return value + ( bNode== null ? "" : bNode.ToString());
            }
        
        }
    
    两种实现方法:
               //单链表
                childNode<string> n1 = new childNode<string>("1");
                childNode<string> n2 = new childNode<string>("2", n1);
                childNode<int> n3 = new childNode<int>(3, n2);
     
                baseNode head = new childNode<string>("1");
                head = new childNode<string>("2",head);
                head = new childNode<int>(3,head);
     
                Console.WriteLine(n3);
                Console.WriteLine(head);

      

  • 相关阅读:
    open()函数与读写文件
    vim编辑器常用操作
    strip()函数---去除字符串首尾字符
    Python中字符串转义的用法
    shell中内置字段的分隔符IFS
    shell中整数变量自增用法
    shell中EOF的用法
    shell变量字符串截取
    shell中的“数组”
    年终总结:想的多了就该敷衍性得记录一下
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3254220.html
Copyright © 2020-2023  润新知