C 實現順序表(線性表)

2021-08-25 01:42:44 字數 1512 閱讀 8694

基本思想是使用陣列作為盛放元素的容器,陣列一開始的大小要實現確定,並使用乙個pointer指向順序表中最後的元素。順序表中的元素是陣列中元素的子集。順序表在記憶體中是連續的,優勢是查詢,弱勢是插入元素和刪除元素。

為避免裝箱拆箱,這裡使用泛型,代替object。使用object的例子可以參照這個鏈結中的例子實現的是佇列,並沒 有使用pointer來標識 順序表中最後乙個元素,而是動態的調整陣列的大小,這與本例明顯不同,動態調整陣列大小開銷較大。使用object同樣可以完成順序表資料結構,但是頻繁裝箱拆箱造成較大的開銷,應使用泛型代替。

using system; using system.collections.generic; using system.linq; using system.text; namespace linearlist //順序錶類 class sequencelist:ilistds set } public t this[int i]//索引器方便返回 } public int pointerlast } public sequencelist(int size) public bool isfull()//判斷是否超出容量 #region ilistds成員 public int getlength() public void insert(t item, int i)//設i為第i個元素,從1開始。該函式表示在第i個元素後面插入item if (this.isfull()) //如果可以新增 this.intpointerlast++; for(int j=this.intpointerlast;j>=i+1;j--) this.titems[i] = item; } public void add(t item) else } public bool isempty() public t getelement(int i)//設i最小從0開始 if (i > this.intpointerlast||i<0) return this.titems[i]; } public void delete(int i)//設i最小從0開始 if (i > this.intpointerlast || i < 0) for (int j = i; j < this.intpointerlast; j++) this.intpointerlast--;//表長-1 } public void clear() public int locateelement(t item) for (int i = 0; i <= this.intpointerlast; i++) } console.writeline("not found"); return -1; } public void reverse() else } } #endregion } class program } }

基於順序表的合併排序:

//基於順序表的合併排序 static private sequencelistmerge(sequencelists1,sequencelists2) else } if (i > s1.pointerlast) return slist; } else//即j>s2.pointerlast return slist; } }

線性表之順序表C 實現

線性表之順序表 一 標頭檔案 seqlist.h 1 順序線性表的標頭檔案 2 include3 4const int maxsize 100 5 定義順序表seqlist的模板類 6 template 7class seqlist 11 順序表有參構造器 建立乙個長度為n的順序表 12 seqli...

線性表順序實現

線性表實現,建立表,插入元素,刪除元素,銷毀表,表的遍歷,表的並集交集差集。不斷更新中。include include include include define list init size 100 初始大小 define error 0 define listincrement 10 增量大小...

C 實現線性表的順序儲存(順序表)

關於資料結構中的 線性表 佇列 棧 的相關講解,請看 c 實現資料結構中的線性表 typedef int elementtype define maxsize 10 struct sequence typedef int element type define maxsize 10 include ...