A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔克 黑马帝   /  2011-11-23 23:08  /  2445 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用c# 实现顺序表
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. namespace ListDS
  5. {
  6.     /// <summary>
  7.     /// 顺序表
  8.     /// </summary>
  9.     /// <typeparam name="T"></typeparam>
  10.     public  class SeqListDS<T> : IListDS<T>
  11.     {
  12.         /// <summary>
  13.         /// 最大容量。
  14.         /// </summary>
  15.         private int maxsize;
  16.         /// <summary>
  17.         /// 数据。
  18.         /// </summary>
  19.         private T[] date;
  20.         /// <summary>
  21.         /// 最后的位置。
  22.         /// </summary>
  23.         private int last;
  24.         /// <summary>
  25.         /// 索引器。
  26.         /// </summary>
  27.         /// <param name="index">位置</param>
  28.         /// <returns></returns>
  29.         public T this[int index]
  30.         {
  31.             get
  32.             {
  33.                 return date[index];
  34.             }
  35.             set
  36.             {
  37.                 date[index] = value;
  38.             }
  39.         }
  40.         /// <summary>
  41.         /// 最后一个数据的位置属性。
  42.         /// </summary>
  43.         public int Last
  44.         {
  45.             get
  46.             {
  47.                 return last;
  48.             }
  49.             set
  50.             {
  51.                 last = value;
  52.             }
  53.         }
  54.         /// <summary>
  55.         /// 容量属性。
  56.         /// </summary>
  57.         public int MaxSize
  58.         {
  59.             get
  60.             {
  61.                 return maxsize;
  62.             }
  63.             set
  64.             {
  65.                 maxsize = value;
  66.             }
  67.         }
  68.         /// <summary>
  69.         /// 构造函数。
  70.         /// </summary>
  71.         /// <param name="size"></param>
  72.         public SeqListDS(int size)
  73.         {
  74.             maxsize = size;
  75.             date = new T[size];
  76.             last = -1;
  77.         }
  78.         /// <summary>
  79.         /// 长度。
  80.         /// </summary>
  81.         /// <returns></returns>
  82.         public int GetLength()
  83.         {
  84.             return last + 1;
  85.         }
  86.         /// <summary>
  87.         /// 清空。
  88.         /// </summary>
  89.         public void Clear()
  90.         {
  91.             last = -1;
  92.         }
  93.         /// <summary>
  94.         /// 是否为空。
  95.         /// </summary>
  96.         /// <returns></returns>
  97.         public bool IsEmpty()
  98.         {
  99.             if (last == -1)
  100.             {
  101.                 return true;
  102.             }
  103.             else
  104.             {
  105.                 return false;
  106.             }
  107.         }
  108.         /// <summary>
  109.         /// 是否为空。
  110.         /// </summary>
  111.         /// <returns></returns>
  112.         public bool IsFull()
  113.         {
  114.             if (last == maxsize - 1)
  115.             {
  116.                 return true;
  117.             }
  118.             else
  119.             {
  120.                 return false;
  121.             }
  122.         }
  123.         /// <summary>
  124.         /// 附加元素。
  125.         /// </summary>
  126.         /// <param name="item">要加的元素</param>
  127.         public void Append(T item)
  128.         {
  129.             if (!(this.IsFull()))
  130.             {
  131.                 date[++last] = item;
  132.             }
  133.             else
  134.             {
  135.                 Console.WriteLine("顺序表已满!");
  136.                 return;
  137.             }

  138.         }
  139.         /// <summary>
  140.         /// 插入元素。
  141.         /// </summary>
  142.         /// <param name="item">元素</param>
  143.         /// <param name="i">位置</param>
  144.         public void InSert(T item, int i)
  145.         {
  146.             if (!this.IsFull())
  147.             {
  148.                 last++;
  149.                 for (int j = last; j >= i; )
  150.                 {
  151.                     date[j] = date[--j];
  152.                 }
  153.                 date[i - 1] = item;
  154.             }
  155.             else
  156.             {
  157.                 Console.WriteLine("顺序表已满!");
  158.                 return;
  159.             }
  160.         }
  161.         /// <summary>
  162.         /// 删除。
  163.         /// </summary>
  164.         /// <param name="i"></param>
  165.         /// <returns></returns>
  166.         public T Delete(int i)
  167.         {
  168.             T item = default(T);
  169.             if (this.IsEmpty())
  170.             {
  171.                 Console.WriteLine("顺序表是空的!");
  172.                 return item;
  173.             }
  174.             if (i > last + 1 || i < 1)
  175.             {
  176.                 Console.WriteLine("没有第{0}个元素!", i);
  177.                 return item;
  178.             }
  179.             else
  180.             {
  181.                 item = date[i - 1];
  182.                 for (int j = i; j <= last; j++)
  183.                 {
  184.                     date[j - 1] = date[j];
  185.                 }
  186.                 last--;
  187.                 return item;

  188.             }
  189.         }
  190.         /// <summary>
  191.         /// 找元素。
  192.         /// </summary>
  193.         /// <param name="i"></param>
  194.         /// <returns></returns>
  195.         public T GetElem(int i)
  196.         {
  197.             T item = default(T);
  198.             if (this.IsEmpty())
  199.             {
  200.                 Console.WriteLine("顺序表为空!");
  201.                 return item;
  202.             }
  203.             if (i > last + 1 || i < 1)
  204.             {
  205.                 Console.WriteLine("位置不对!");
  206.                 return item;
  207.             }
  208.             else
  209.             {
  210.                 item = date[i - 1];
  211.                 return item;
  212.             }

  213.         }
  214.         /// <summary>
  215.         /// 找位置。
  216.         /// </summary>
  217.         /// <param name="value"></param>
  218.         /// <returns></returns>
  219.         public int Locate(T value)
  220.         {
  221.             if (this.IsEmpty())
  222.             {
  223.                 Console.WriteLine("顺序表为空!");
  224.                 return 0;
  225.             }
  226.             else
  227.             {
  228.                 for (int i = 0; i <= last; i++)
  229.                 {
  230.                     if (date[i].Equals(value))
  231.                     {
  232.                         return i;
  233.                     }

  234.                 }
  235.                 Console.WriteLine("没{0}的元素", value.ToString());
  236.                 return 0;
  237.             }

  238.         }
  239.         /// <summary>
  240.         /// 判断是否存在item元素.
  241.         /// </summary>
  242.         /// <param name="item">要判断的元素</param>
  243.         /// <returns>true:存在;false:不存在</returns>
  244.         public bool IsHas(T item)
  245.         {
  246.             if (this.IsEmpty())
  247.             {
  248.                 Console.WriteLine("顺序表为空!");
  249.                 return false;
  250.             }
  251.             for (int i = 0; i < this.GetLength(); i++)
  252.             {
  253.                 if (date[i].Equals(item))
  254.                 {
  255.                     return true;
  256.                 }
  257.             }
  258.             return false;
  259.         }

  260.         public void Display()
  261.         {
  262.             if (IsEmpty())
  263.             {
  264.                 Console.WriteLine("列表为空。");
  265.                 return;
  266.             }
  267.             for (int i = 0; i <=this.Last; i++)
  268.             {
  269.                 Console.Write("{0},", this[i].ToString());
  270.             }
  271.             Console.WriteLine();

  272.         }
  273.     }
  274. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱勋 + 1

查看全部评分

3 个回复

倒序浏览
偶惭愧地顶{:soso_e149:}
回复 使用道具 举报
学习了 啊!!!
回复 使用道具 举报
郑文 黑马帝 2011-11-25 18:44:50
板凳
继续努力 。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马