程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中的泛型鏈表的實現

C#中的泛型鏈表的實現

編輯:C#入門知識

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace 泛型
{
    //簡單鏈表的實現,單向(泛型)
    class 泛型類
    {
        public static void Main()
        {
            
            LinkedList<string> list = new LinkedList<string>();

            list.AddLast("500");
            list.AddLast("400");
            list.AddLast("300");
            list.AddLast("200");

            //使用泛型版的IEnumerable時,foreach也是類型安全的,些時不可能寫 string之外的類型
            foreach (string i in list)
            {
                Console.WriteLine(i);
            }

            Console.ReadLine();
        }
    }

    ////泛型類的定義與一般類相似,只要使用泛型類型聲明,之後,這個類型就可以做為一個字段成員,或者參數類型。
    class LinkedListNode<T>
    {
        //項目值
        private T value;
        private LinkedListNode<T> next;
        private LinkedListNode<T> prev;

        public LinkedListNode(T value)
        {
            this.value = value;
        }

        public T Value
        {
            //只讀屬性
            get
            {
                return this.value;
            }
        }

        //下一個
        public LinkedListNode<T> Next
        {
            get { return next; }
            set { next = value; }
        }

        //上一個
        public LinkedListNode<T> Prev
        {
            get { return prev; }
            set { prev = value; }
        }
    }

    class LinkedList<T> : IEnumerable<T>
    {
        //第一個
        private LinkedListNode<T> first;
        internal LinkedListNode<T> First
        {
            get { return first; }
            set { first = value; }
        }

        //最後一個
        private LinkedListNode<T> last;
        internal LinkedListNode<T> Last
        {
            get { return last; }
            set { last = value; }
        }

        //從後面插入
        public LinkedListNode<T> AddLast(T node)
        {
            LinkedListNode<T> newNode = new LinkedListNode<T>(node);

            if (first == null)
            {
                //Last的引用一直要更新
                first = newNode;
                last = first;
            }
            else
            {
                //把當前最後一個節點的下一個節點的引用 指向新對象
                last.Next = newNode;
                //更新最後一個節點
                last = newNode;
            }

            return newNode;
        }

        public IEnumerator<T> GetEnumerator()
        {
            LinkedListNode<T> current = first;

            while (current != null)
            {
                yield return current.Value;
                //新引用指向下一個節點的地址
                current = current.Next;
  &

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved