基礎資料結構 線性表 順序表

2022-08-11 10:27:12 字數 2992 閱讀 3043

線性表是n個資料元素的有限序列,資料之間存在順序關係,一般同乙個線性表屬於同一類資料物件(例如a~z的字母表)。線性表存在唯一乙個首位元素和末位元素,除了第乙個元素和最後乙個元素,每個元素存在著乙個前驅和乙個後繼(a的後繼是b,b的前驅是a)。線性表主要有順序表和煉表兩種儲存形式,線性表是一種邏輯結構,順序表和煉表是物理儲存結構。本篇主要講的是順序表的實現。

順序表的類定義如下:

#includeusing

namespace

std;

#define ok 0

#define error -1

//順序錶類定義

class

seqlist

;seqlist::seqlist()

seqlist::~seqlist()

為了對順序表進行操作,我們需要增、刪、查、改等功能,基礎語法這裡就不解釋了。size=0初始了順序表的實際大小為0,因為這個時候建立的順序表是空的,在後續的操作中插入乙個資料size便加1,刪除乙個便減1。

下面是插入功能的實現:

int seqlist::list_insert(int i, int

item)

}

插入的操作原理是讓插入位置後續的元素全部後移乙個位置,順序表實際長度增加1,然後讓待插入的元素覆蓋插入位置原有的元素。所以對於需要頻繁修改的線性表,順序表需要比較多次的計算,後面會講的鍊錶的鏈式儲存結構更適合需要高頻改動的場景。

需要稍微轉換一下思維的就是陣列下標是從0開始儲存資料的,在注釋裡我解釋了。

下面是刪除的操作,刪除的原理是讓要刪除的位置後面的元素乙個個覆蓋上去,相當於後面的元素全部往前移動乙個位置。

int seqlist::list_del(int

i)}

下面是其它基本操作:

int seqlist::list_size()

void seqlist::list_display() //

用於輸出整個順序表

int seqlist::list_get(int i) //

獲取指定位置i的元素值

}

接下來結合實驗題目:

實現順序表的用c++語言和類實現順序表

屬性包括:陣列、實際長度、最大長度(設定為1000)

操作包括:建立、插入、刪除、查詢

輸入第1行先輸入n表示有n個資料,即n是實際長度;接著輸入n個資料

第2行輸入要插入的位置和新資料

第3行輸入要插入的位置和新資料

第4行輸入要刪除的位置

第5行輸入要刪除的位置

第6行輸入要查詢的位置

第7行輸入要查詢的位置

輸出資料之間用空格隔開

第1行輸出建立後的順序表內容,包括順序表實際長度和資料

每成功執行一次操作(插入或刪除),輸出執行後的順序表內容

每成功執行一次查詢,輸出查詢到的資料

如果執行操作失敗(包括插入、刪除、查詢等失敗),輸出字串error,不必輸出順序表內容

樣例輸入

6 11 22 33 44 55 66

3 777

1 88819

05樣例輸出

6 11 22 33 44 55 66

7 11 22 777 33 44 55 66

8 888 11 22 777 33 44 55 66

7 11 22 777 33 44 55 66

error

error

44因為具體操作函式我們在上面已經寫好了,接下來在主函式呼叫就可以了。

int

main()

sl.list_display();

//輸出第1行:輸入的資料

cin >> t >> ln; //

第2行輸入要插入的位置和新資料

flag =sl.list_insert(t,ln);

if (flag==error)

cout

<< "

error

"

sl.list_display();

cin >> t >> ln; //

第3行輸入要插入的位置和新資料

flag =sl.list_insert(t,ln);

if (flag==error)

cout

<< "

error

"

sl.list_display();

cin >> t; //

第4行輸入要刪除的位置

flag =sl.list_del(t);

if (flag==error)

cout

<< "

error

"

sl.list_display();

cin >> t; //

第5行輸入要刪除的位置

flag =sl.list_del(t);

if (flag==error)

cout

<< "

error

"

sl.list_display();

cin >> t; //

第6行輸入要查詢的位置

flag =sl.list_get(t);

if (flag==error)

cout

<< "

error

"> t; //

第7行輸入要查詢的位置

flag =sl.list_get(t);

if (flag==error)

cout

<< "

error

"

}

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。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點的距離,同時也代表了房間號,房...