亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現順序表(線性表)完整實例

2020-01-24 01:04:45
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現順序表(線性表)的方法。分享給大家供大家參考,具體如下:

基本思想是使用數組作為盛放元素的容器,數組一開始的大小要實現確定,并使用一個Pointer指向順序表中最后的元素。順序表中的元素是數組中元素的子集。順序表在內存中是連續的,優勢是查找,弱勢是插入元素和刪除元素。

為避免裝箱拆箱,這里使用泛型,代替object。使用object的例子可以參照本站這篇文章://www.49028c.com/article/87603.htm,這個鏈接中的例子實現的是隊列,并沒 有使用Pointer來標識 順序表中最后一個元素,而是動態的調整數組的大小,這與本例明顯不同,動態調整數組大小開銷較大。使用object同樣可以完成順序表數據結構,但是頻繁裝箱拆箱造成較大的開銷,應使用泛型代替。

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LinearList{  public interface IListDS<T>  {    int GetLength();    void Insert(T item, int i);    void Add(T item);    bool IsEmpty();    T GetElement(int i);    void Delete(int i);    void Clear();    int LocateElement(T item);    void Reverse();  }  //順序表類  class SequenceList<T>:IListDS<T>  {    private int intMaxSize;//最大容量事先確定,使用數組必須先確定容量    private T[] tItems;//使用數組盛放元素    private int intPointerLast;//始終指向最后一個元素的位置    public int MaxSize    {      get { return this.intMaxSize; }      set { this.intMaxSize = value; }    }    public T this[int i]//索引器方便返回    {      get { return this.tItems[i]; }    }    public int PointerLast    {      get { return this.intPointerLast; }    }    public SequenceList(int size)    {      this.intMaxSize = size;      this.tItems = new T[size];//在這里初始化最合理      this.intPointerLast = -1;//初始值設為-1,此時數組中元素個數為0    }    public bool IsFull()//判斷是否超出容量    {      return this.intPointerLast+1 == this.intMaxSize;    }    #region IListDS<T> 成員    public int GetLength()    {      return this.intPointerLast + 1;//不能返回tItems的長度    }    public void Insert(T item, int i)//設i為第i個元素,從1開始。該函數表示在第i個元素后面插入item    {      if (i < 1 || i > this.intPointerLast + 1)      {        Console.WriteLine("The inserting location is wrong!");        return;      }      if (this.IsFull())      {        Console.WriteLine("This linear list is full! Can't insert any new items!");        return;      }      //如果可以添加      this.intPointerLast++;      for(int j=this.intPointerLast;j>=i+1;j--)      {        this.tItems[j] = this.tItems[j - 1];      }      this.tItems[i] = item;    }    public void Add(T item)    {      if (this.IsFull())//如果超出最大容量,則無法添加新元素      {        Console.WriteLine("This linear list is full! Can't add any new items!");      }      else      {        this.tItems[++this.intPointerLast] = item;//表長+1      }    }    public bool IsEmpty()    {      return this.intPointerLast == -1;    }    public T GetElement(int i)//設i最小從0開始    {      if(this.intPointerLast == -1)      {        Console.WriteLine("There are no elements in this linear list!");        return default(T);      }      if (i > this.intPointerLast||i<0)      {        Console.WriteLine("Exceed the capability!");        return default(T);      }      return this.tItems[i];    }    public void Delete(int i)//設i最小從0開始    {      if (this.intPointerLast == -1)      {        Console.WriteLine("There are no elements in this linear list!");        return;      }      if (i > this.intPointerLast || i < 0)      {        Console.WriteLine("Deleting location is wrong!");        return;      }      for (int j = i; j < this.intPointerLast; j++)      {        this.tItems[j] = this.tItems[j + 1];      }      this.intPointerLast--;//表長-1    }    public void Clear()    {      this.intPointerLast = -1;    }    public int LocateElement(T item)    {      if (this.intPointerLast == -1)      {        Console.WriteLine("There are no items in the list!");        return -1;      }      for (int i = 0; i <= this.intPointerLast; i++)      {        if (this.tItems[i].Equals(item))//若是自定義類型,則T類必須把Equals函數override        {          return i;        }      }      Console.WriteLine("Not found");      return -1;    }    public void Reverse()    {      if (this.intPointerLast == -1)      {        Console.WriteLine("There are no items in the list!");      }      else      {        int i = 0;        int j = this.GetLength() / 2;//結果為下界整數,正好用于循環        while (i < j)        {          T tmp = this.tItems[i];          this.tItems[i] = this.tItems[this.intPointerLast - i];          this.tItems[this.intPointerLast - i] = tmp;          i++;        }      }    }    #endregion  }  class Program  {    static void Main(string[] args)    {    }  }}

基于順序表的合并排序:

//基于順序表的合并排序static private SequenceList<int> Merge(SequenceList<int> s1,SequenceList<int> s2){  SequenceList<int> sList = new SequenceList<int>(20);  int i = 0;  int j = 0;  while(i<=s1.PointerLast&&j<=s2.PointerLast)  {    if (s1[i] < s2[j])    {      sList.Add(s1[i]);      i++;    }    else    {      sList.Add(s2[j]);      j++;    }  }  if (i > s1.PointerLast)  {    while (j <= s2.PointerLast)    {      sList.Add(s2[j]);      j++;    }    return sList;  }  else//即j>s2.PointerLast  {    while (i <= s1.PointerLast)    {      sList.Add(s1[i]);      i++;    }    return sList;  }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#數據結構與算法教程》、《C#遍歷算法與技巧總結》、《C#程序設計之線程使用技巧總結》、《C#操作Excel技巧總結》、《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數組操作技巧總結》及《C#面向對象程序設計入門教程

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久在精品线影院精品国产| 亚洲国产日韩欧美在线动漫| 国产精品第一页在线| 毛片精品免费在线观看| 国产午夜精品美女视频明星a级| 92福利视频午夜1000合集在线观看| 91久热免费在线视频| 懂色av一区二区三区| 伊人伊成久久人综合网小说| 国产久一一精品| 91高清视频在线免费观看| 色综合男人天堂| 日韩视频免费观看| 国产精品久久久久999| 国产精品精品视频| 亚洲天堂第二页| 97色在线播放视频| 欧美电影免费观看| 日韩欧美中文在线| 亚洲天堂网站在线观看视频| 欧美尺度大的性做爰视频| 97久久精品人搡人人玩| 亚洲黄一区二区| 538国产精品一区二区免费视频| 亚洲免费成人av电影| 成人网在线免费观看| 欧美日韩在线视频一区二区| 性日韩欧美在线视频| 日韩女在线观看| 日韩欧美在线播放| 成人欧美一区二区三区黑人| 国产日韩欧美日韩大片| 国产精品视频一区二区三区四| 欧美天天综合色影久久精品| 久久久免费精品视频| 在线成人中文字幕| 欧美日韩亚洲一区二| 一本大道久久加勒比香蕉| 欧美日韩国产999| 欧美成人精品激情在线观看| 亚洲一区二区三区成人在线视频精品| 日韩美女主播视频| 91产国在线观看动作片喷水| 亚洲成人av在线| 欧美成人剧情片在线观看| 国产精品7m视频| 欧美理论电影在线观看| 国产欧美一区二区白浆黑人| 亚洲精品电影久久久| 亚洲国产天堂久久综合| 成人日韩在线电影| 久久久人成影片一区二区三区| 色偷偷偷综合中文字幕;dd| 久久福利视频网| 精品久久久久久国产91| 国产精品久久久久av| 91精品91久久久久久| 国产精品久久网| 91精品久久久久久久久久入口| 中文字幕日韩精品在线观看| 国产精品一区二区三| 欧美—级a级欧美特级ar全黄| 91网站在线看| 欧美视频在线观看 亚洲欧| 欧美极品美女电影一区| 国产一区二区香蕉| 欧美一级电影在线| 欧美—级a级欧美特级ar全黄| 国产精品丝袜久久久久久不卡| 日韩一区二区欧美| 日韩动漫免费观看电视剧高清| 亚洲午夜女主播在线直播| 日韩精品极品在线观看播放免费视频| 色999日韩欧美国产| 亚洲国产成人一区| 亚洲一区二区免费在线| 色与欲影视天天看综合网| 亚洲永久免费观看| 日韩精品极品视频| 国产69精品久久久久久| 久99久在线视频| 尤物99国产成人精品视频| 欧美wwwwww| 欧美成人性生活| 黄网动漫久久久| 91精品国产自产在线老师啪| 欧美日韩国产丝袜另类| 日韩在线观看视频免费| 国产精品精品视频一区二区三区| 欧美性xxxxx| 成人性生交大片免费观看嘿嘿视频| 88xx成人精品| 这里精品视频免费| 成人激情在线观看| 久久国产精品电影| 永久免费精品影视网站| 亚洲天堂开心观看| 亚洲桃花岛网站| 久久夜色精品亚洲噜噜国产mv| 久久天堂电影网| 欧美日韩不卡合集视频| 成人av在线天堂| 在线播放日韩专区| 91久久精品国产91性色| 国内精品久久久久久久| 国产精品视频网址| 亚洲香蕉成视频在线观看| 国产日韩欧美电影在线观看| 日韩激情av在线播放| 久久久久久久电影一区| 亚洲国产精品大全| 精品国产乱码久久久久久婷婷| 亚洲精品国产精品久久清纯直播| 亚洲精品国产精品久久清纯直播| 国产精品入口福利| 久久噜噜噜精品国产亚洲综合| 成人黄色av免费在线观看| 欧美日韩午夜激情| 韩国精品美女www爽爽爽视频| 日韩av电影在线网| 91精品国产乱码久久久久久久久| 亚洲午夜未删减在线观看| 亚洲精品久久久久中文字幕二区| 久久久久久国产精品久久| 国内精品视频一区| 欧美老少做受xxxx高潮| 91精品国产91久久| 欧美在线视频免费| 亚洲影院色在线观看免费| 日韩欧美亚洲国产一区| 国产丝袜精品视频| 国产有码在线一区二区视频| 国产欧美精品va在线观看| 奇门遁甲1982国语版免费观看高清| 夜夜嗨av色一区二区不卡| 精品动漫一区二区三区| 亚洲91精品在线| 97精品国产aⅴ7777| 久久777国产线看观看精品| 国产日韩欧美在线看| 成人黄色中文字幕| 亚洲视频电影图片偷拍一区| 成人午夜小视频| 精品国偷自产在线视频| 成人情趣片在线观看免费| 亚洲欧美一区二区激情| 精品国产依人香蕉在线精品| 成人免费网站在线看| 国产伦精品免费视频| 成人乱人伦精品视频在线观看| 欧美在线观看一区二区三区| 久久久精品999| 亚洲欧洲日产国产网站| 久久99国产综合精品女同| 成人深夜直播免费观看| 欧美国产视频日韩| 欧美俄罗斯性视频| 在线免费观看羞羞视频一区二区| 欧美日韩999| 韩国三级日本三级少妇99| 91性高湖久久久久久久久_久久99| 青草青草久热精品视频在线观看| 久久亚洲私人国产精品va| 亚洲精品视频网上网址在线观看|