小小小幸运 发表于 2025-1-11 16:28:56

线性表的接口定义及使用

定义接口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _001_线性表
{
    interface IListDS<T>//定义接口
    {
      int GetLength();
      void Clear();
      bool IsEmpty();
      void Add(T item);
      void Insert(T tiem, int index);
      T Delete(int index);
      T this { get; }
      T GetEle(int index);
      int Locate(T value);
    }
}
使用顺序表
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _001_线性表
{
    /// <summary>
    ///
    /// </summary>
    class Program
    {
      static void Main(string[] args)
      {
            /// <summary>
            /// 使用BCL中的线性表
            /// 三个字符串具有索引的先后关系,可以通过索引访问元素
            /// </summary>
            //List<string> strList = new List<string>();
            //strList.Add("123");//0
            //strList.Add("456");//1
            //strList.Add("789");//2
            //Console.WriteLine(strList);
            //strList.Remove("789");//移除
            //Console.WriteLine(strList.Count);//大小
            //strList.Clear();//清除
            //Console.WriteLine(strList.Count);
            //Console.ReadKey();


            //使用我们自己的顺序表
            SeqList<string> seqList = new SeqList<string> ();
            seqList.Add("123");
            seqList.Add("456");
            seqList.Add("789");

            Console.WriteLine(seqList.GetEle(0));
            Console.WriteLine(seqList);//通过索引器
            seqList.Insert("777", 1);
            for(int i=0;i<seqList.GetLength ();i++)
            {
                Console.Write(seqList + " ");
            }
            Console.WriteLine();
            seqList.Delete(0);
            seqList.Clear();
            Console.WriteLine(seqList.GetLength());
            Console.ReadKey();
      }
    }
}
顺序表实现方式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _001_线性表
{
    //顺序表实现方式
    class SeqList<T> : IListDS<T>
    {
      private T[] data;//用来存储数据
      private int count = 0;//数据个数

      /// <summary>
      /// 构造方法
      /// </summary>
      /// <param name="size"></param>
      public SeqList(int size)//size是最大容量
      {
            data = new T;
            count = 0;
      }
      public SeqList ():this(10)//默认构造函数容量为10
      {

      }
      //public T this => throw new NotImplementedException();

      public void Add(T item)
      {
            if(count == data.Length )
            {
                Console.WriteLine("当前顺序表已经存满");
            }
            else
            {
                data = item;
                count++;
            }
      }

      public void Clear()
      {
            count = 0;
      }

      public T Delete(int index)
      {
            T temp = data;
            for(int i=index+1;i<count;i++)
            {
                data = data;
            }
            count--;
            return temp;
      }

      public T this
      {
            get { return GetEle(index); }
      }

      public T GetEle(int index)
      {
            if(index >=0 && index <=count-1)//索引存在
            {
                return data;
            }
            else
            {
                Console.WriteLine("索引不存在");
                return default(T);
            }
      }

      public int GetLength()
      {
            return count;
      }

      public void Insert(T item, int index)
      {
            for(int i=count-1;i>=index;i--)//从后往前遍历,防止数据被覆盖
            {
                data = data;
            }
            data = item;
            count++;
      }

      public bool IsEmpty()
      {
            return count == 0;
      }

      public int Locate(T value)
      {
            for(int i=0;i<count;i++)
            {
                if(data.Equals (value ))
                {
                  return i;
                }
               
            }
            return -1;
      }
    }
}


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 线性表的接口定义及使用