Listシーケンステーブル行列、スタック、辞書.

70118 ワード

基礎知識
シーケンステーブルは配列です!!!ただし配列が制限されているシーケンステーブルはメモリアドレスが連続しており、シーケンステーブルはクエリーが便利で追加遍歴は削除や挿入に適していないため、頻繁に付与操作を行うためシーケンステーブルに長さ制限がある
チェーンヘッダ挿入法
チェーンテーブルは1つのノードから構成され、ノードの中には2つの要素dataノードの次のアドレスがノードになっている.NextがNullの場合はチェーンテーブルからテールチェーンテーブルまで長さ制限のないチェーンテーブルですのでチェーンを切らないように注意してください
チェーンテーブルを追加しても削除しても誰を見つけなければなりませんか?操作する前の要素チェーンテーブルは筆記試験で大きな割合を占めています.チェーンテーブルは単純にチェーンテーブルより2種類に分けられます.1つのデータを逆置きしてヘッダに挿入する方式exp index=0チェーンテーブルデータと入力データを一致させるにはテール挿入法exp index=lengthシーケンステーブルでスペースを節約し、チェーンテーブルはスペースを浪費する(より良い利用空間)
スタックとキューは特殊な線形テーブル(制限された線形テーブル)シーケンススタックシーケンスキュープロトタイプ順テーブルスタックチェーンキュープロトタイプはチェーンテーブルです
ちくじひょう
MyListクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyList
{
    //  
    class MySeqList<T>
    {
        private int _flag;//    
        private T[] _ints;//     ,    


        public MySeqList()//    ,   
        {
            _ints = new T[30];
            _flag = 0;
        }
        public MySeqList(int count)//  
        {
            _ints = new T[count];
            _flag = 0;
        }

        //  
        public void AddItem(T Item)
        {
            if (_flag >= _ints.Length)
            {
                Console.WriteLine("    ");
                return;
            }
            _ints[_flag] = Item;
            _flag++;
        }
        //     
        public T RemoveAt(int index)
        {
            T returnValue = default(T);
            if (index<0||index>=_flag)
            {
                Console.WriteLine("    ");
                goto returnTip;
            }
            returnValue = _ints[index];
            for (int i = index; i < _flag-1; i++)
            {
                _ints[i] = _ints[i + 1];
            }
            _flag--;
            returnTip:
            return returnValue;
        }
        //     ,     -1
        public void Remove(T removeItem)
        {
            int tmpIndex = -1;
            for (int i = 0; i < _flag; i++)
            {
                if (_ints[i].Equals(removeItem))
                {
                    tmpIndex = i;
                    break;
                }
            }
            if (tmpIndex != -1)
            {
                RemoveAt(tmpIndex);
            }
        }
        //  
        public int IndexOf(T Item)
        {
            int returnValue = -1;
            for (int i = 0; i < _flag; i++)
            {
                if (_ints[i].Equals(Item))
                {
                    returnValue = i;
                    break;
                }
            }
            return returnValue;
        }
        //  
        public void Insert(int index,T Item)
        {
            if (_flag>=_ints.Length)
            {
                Console.WriteLine("  ");
                return;
            }
            if (index > _flag || index < 0)
            {
                Console.WriteLine("    ");
                return;
            }
            for (int i = _flag; i >index; i--)
            {
                _ints[i] = _ints[i - 1];
               
            }
             _ints[index] = Item;
                _flag++;
        }
        //  
        public void ShowItem(Action<T> ac)
        {
            for (int i = 0; i < _flag; i++)
            {
                ac(_ints[i]);
            }
        }
        //    
        public void Clear()
        {
            _flag = 0;
        }
        //  
        public void Reverse()
        {
            T n;
                for (int i = 0; i < _flag/2; i++)
                {
                    n = _ints[i];
                    _ints[i] = _ints[_flag - 1-i];
                    _ints[_flag - 1-i] = n;
                }
        }
    }
}


プライマリクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyList
{
    class MyClass
    {
        public string Name;
        public MyClass(int i)
        {
            Name = "zhangsan\t" + i;
        }
    }
    class Program
    {
        static void show(MyClass my)
        {
            Console.WriteLine(my.Name);
        }
        static void Main(string[] args)
        {
            MySeqList<MyClass> intList = new MySeqList<MyClass>();
            intList.AddItem(new MyClass(1));
            intList.AddItem(new MyClass(2));
            intList.AddItem(new MyClass(3));
            intList.AddItem(new MyClass(4));
            intList.AddItem(new MyClass(5));
            intList.ShowItem(show);

            intList.Reverse();
            intList.ShowItem(show);

            //intList.ShowItem(show);
            Console.ReadLine();
        }
    }
}


チェーンテーブル
LinkListクラス
using System;

namespace   
{
    //                            
    public class LinkList
    {
        private Node _head;
        private int _count;
        
        public LinkList()
        {
            //new    _head.next --> null head.data = 0
            _head = new Node();
            _count = 0;
        }

        public void AddItem(Node newNode)
        {
            //     
            Node tmpNode = _head;
            //        
            while (tmpNode.Next != null)
            {
                //    
                tmpNode = tmpNode.Next;
            }
//               
            tmpNode.Next = newNode;
            //  ++
            _count++;

        }

        public int GetLength()
        {
            return _count;
        }

        public void Insert(int index, Node newNode)
        {
            //0 
            if (index < 0 || index > _count)
            {
                Console.WriteLine("Over");
                return;
            }

            Node tmpNode = _head;
            for (int i = 0; i < index; i++)
            {
                tmpNode = tmpNode.Next;
            }
            //tmpNode? index      
          
            newNode.Next = tmpNode.Next;
            tmpNode.Next = newNode;
            _count++;
            //0~l-1
            // l

        }


        /// 
        ///      index     value
        /// 
        /// 
        public void ShowItem(Action<int,int> ac)
        {
            if (_count == 0)
            {
                Console.WriteLine(" ");
                return;
            }

            Node tmNode = _head.Next;
            for (int i = 0; i < _count; i++)
            {
                ac(i, tmNode.Data);
                //   
                tmNode = tmNode.Next;
            }
        }


        public int RemoveAt(int index)
        {
            //    data   
            int returnValue = default(int);
            //      
            if (index < 0 || index >=_count)
            {
                Console.WriteLine("error");
                goto returnTip;
            }
            //          
            Node tmpNode = _head;
            //   
            for (int i = 0; i < index; i++)
            {
                tmpNode = tmpNode.Next;
            }
            //      
            Node deleteNode = tmpNode.Next;
            //            
            tmpNode.Next = tmpNode.Next.Next;
            //     
            deleteNode.Next = null;
            //  --
            _count--;
            //         data
            returnValue = deleteNode.Data;

            returnTip:
                return returnValue;
        }


        public void Clear()
        {
            _head.Next = null;
            _count = 0;
        }
         public void Reverse()//  
        {
            Node T1, T2;//      
            T2 = _head.Next;//T2=   ,     
            _head.Next = null;//      .
            while (T2!=null)//             
            {
                T1 = T2.Next;//  T1 T2    
                T2.Next = _head.Next;// T2      ,    ,
                _head.Next = T2;//    
                T2 = T1;//       .
            }
            
        }
        public int RemoveMin()//     
        {
            //             ,           
            Node DelePreMin, DeleMin, preMin, min;
            DelePreMin = preMin = _head;//      
            DeleMin = min = _head.Next;//           
            while (min!=null)//         
            {
                if (DeleMin.Date>min.Date)//         
                {
                    DelePreMin = preMin;//               
                    DeleMin = min;//         ,       
                }
                preMin = preMin.Next;//    
                min = min.Next;
            }
            DelePreMin.Next = DelePreMin.Next.Next;//     
            DeleMin.Next = null;
            _count--;
            return DeleMin.Date;
        }
      

    }
}

Node类

namespace   
{
    public class Node
    {
        public int Data;
        //      
        public Node Next;

        /// 
        ///            
        /// 
        public Node()
        {
            Data = default(int);
            Next = null;
        }
        
        public Node(int  value)
        {
            Data = value;
            Next = null;
        }
    }
}

主类

using System;

namespace   
{
    internal class Program
    {

        public static void Show(int index, int value)
        {
            Console.WriteLine(" {0}    {1}",index+1,value);
        }

        public static void Main(string[] args)
        {
            
            LinkList linkList = new LinkList();
            linkList.AddItem(new Node(1));
            linkList.AddItem(new Node(2));
            linkList.AddItem(new Node(3));
            linkList.AddItem(new Node(4));
            linkList.AddItem(new Node(5));
          linkList.Insert(1,new Node(1000));
            //1 1000 2 3 4 5 
            linkList.Clear();
            linkList.Reverse();
            linkList.RemoveMin();

            Console.WriteLine(linkList.RemoveAt(1));
            Console.WriteLine(linkList.GetLength());
            linkList.ShowItem(Show);
           
        }
    }
}

スタック
スタック:stack先進後出圧スタック:push出スタック:pop取得スタックトップ:peek判断有無:cont***
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace  
{
    class Program
    {
        static void Main(string[] args)
        {
           Stack<int>  stack = new Stack<int>();
            //      
            stack.Push(10);
            stack.Push(20);
            stack.Push(30);
            stack.Push(40);
            stack.Push(50);
            stack.Push(60);
            stack.Push(70);
            stack.Push(80);
            stack.Push(90);
            stack.Push(100);
            stack.Push(110);

            //Console.WriteLine(stack.Pop());
            ;
            //   
          int[] ints=  stack.ToArray();
            Console.WriteLine(ints[0]);

        }
    }
}


キュー:Queue先進先入隊:Enqueue出隊:Dequeue戻りキューヘッダ:Peek
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace   
{
    class Program
    {
        static void Main(string[] args)
        {

            List<int> list = new List<int>();
            Queue<int> queue = new Queue<int>();
            queue.Enqueue(10);
            queue.Enqueue(20);
            queue.Enqueue(30);
            queue.Enqueue(40);
            queue.Enqueue(50);
            queue.Enqueue(60);
            queue.Enqueue(70);
           
            Console.WriteLine(queue.Dequeue());
        }
    }
}


辞書
辞書を巡る方法(1)KeyValuePair foreach(KeyValuePair pair in dic)(2)Dictionary.Values foreach (int value in dic.Values) (3)Dictionary.Keys foreach (string key in dic.Keys)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace   
{
    class Program
    {
        static void Main(string[] args)
        {
           // //string string      
           // //name age
           // //fenshuA fenshuB
           // //GameObj Comm
           // Dictionary userDictionary = new Dictionary();
           // userDictionary.Add("zhangsan","1324");
           // //userDictionary.Add("zhangsan","1324");
            Console.WriteLine(userDictionary.Remove("lixi"));
           // //userDictionary.ContainsKey()
           // ;
           // foreach (var v in userDictionary)
           // {

           //     Console.WriteLine(v.Key);
           //     Console.WriteLine(v.Value);
           // }

           // Console.WriteLine("=========================================");

           // userDictionary["zhangsan"] = "zhangsangfeng";
           // Console.WriteLine(userDictionary["zhangsan"]);
           // //foreach (var v in userDictionary)
           // //{

           // //    Console.WriteLine(v.Key);
           // //    Console.WriteLine(v.Value);
           // //}

            //             !!!
            List<int> list = new List<int>();
            list.Add(10);//     
           list.AddRange(new int[]{1,2,3,4,5,6,7,8,9,0}); //        
            list.Remove(10000); //     


        }
    }
}