資料結構與演算法 複習 線性表(順序表實現)

2021-10-07 23:50:19 字數 3291 閱讀 4980

**用作複習記錄,不夠規範,歡迎批評指正。

/**

* 程式說明:線性表的順序實現

* 1.建立空線性表

* 2.在list的位置p之前插入乙個元素

* 3.在list的位置p之後插入乙個元素

* 4.刪除乙個x值的元素

* 5.在list刪除位置為p的元素,並返回成功與否的標誌

* 6.在list中查詢值為x的元素的位置

* 7.判斷線性表是否為空

* 8.線性表初始化

*/#include

#include

/** * 線性表結構定義

*/struct seqlist

;typedef

struct seqlist * pseqlist;

//定義乙個指向seqlist的指標型別

/** * 1.建立乙個空的線性表

* @param m 線性表長度

* @return

*/pseqlist createnulllist_seq

(int m)

else

}printf

("建立線性表時分配空間失敗\n");

return

null;}

/** * 2.判斷線性表是否為空

* @param palist

* @return

*/int

isnulllist_seq

(pseqlist palist)

/** * 3.輸入資料,找出該資料位於線性表的下標

* @param palist

* @param x

* @return

*/int

locate_seq

(pseqlist palist,

int x)

return-1

;}/** * 4.對指定的下標資料前,插入資料

* @param palist

* @param position

* @param x

* @return

*/int

insertpre_seq

(pseqlist palist,

int position,

int x)

if(position<

0|| position>palist->n)

for(

int i = palist->n; i>=position; i--

) palist->vals[position]

= x;

palist->n +=1

;printf

("插入成功\n");

return1;

}/**

* 5.刪除指定下標的元素

* @param palist

* @param position

* @return

*/int

deletep_seq

(pseqlist palist,

int position)

if(position > palist->n || position <0)

for(

int i = position +

1; in;i++

) palist->n -=1

;printf

("刪除成功\n");

return1;

}/**

* 6.查詢元素的刪除方法

* @param palist

* @param x

* @return

*/int

deletev_seq

(pseqlist palist,

int x)if(

locate_seq

(palist,x)==-

1)deletep_seq

(palist,

locate_seq

(palist,x));

printf

("刪除成功\n");

return1;

}/**

* 7.初始化資料的方法

* @param palist

* @param data

*/void

initdata

(pseqlist palist,

int data)

}/**

* 8.線性表列印方法

* @param palist

*/void

printseqlist

(pseqlist palist)

for(

int i=

0;in;i++

)printf

("\n");

}/**

* 程式測試入口

* @return

*/int

main()

; pseqlist palist =

createnulllist_seq

(100);

printf

("正在初始化資料...\n");

initdata

(palist,data)

;printf

("初始化成功,列印線性表\n");

printseqlist

(palist)

;printf

("測試:判斷線性表是否為空:%d\n"

,isnulllist_seq

(palist));

printf

("尋找資料:4,返回下標%d\n"

,locate_seq

(palist,4)

);printf

("插入資料:666,在下標:2之前;是否成功:%d;列印線性表:\n"

,insertpre_seq

(palist,2,

666);)

;printseqlist

(palist)

;printf

("測試:刪除下標為3的資料,是否成功:%d\n"

,deletep_seq

(palist,3)

);printseqlist

(palist)

;printf

("測試:刪除資料:5,是否成功:%d\n"

,deletev_seq

(palist,5)

);printseqlist

(palist)

;printf

("測試結束\n");

}

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...

資料結構 線性表 順序表

線性表是具有相同特性的資料元素的乙個有限序列。線性表的順序儲存結構是,把線性表中的所有元素按照其邏輯順序依次儲存到從計算機儲存器中指定的儲存位置開始的一塊連續的儲存空間。include include include define maxsize 50 using namespace std 假設l...

資料結構 線性表(順序表)

順序表就是把線性表中的所有元素按照其邏輯順序,依次儲存到從指定的儲存位置開始的一塊連續的儲存空間中。這樣線性表中第乙個元素的儲存位置就是指定的儲存位置,第i 1個元素的儲存位置緊接在第i個元素的儲存位置的後面。順序表就像如下圖中的房子,每個房間左邊的數字就是該房間離0點的距離,同時也代表了房間號,房...