線性表的順序儲存結構練習過程中遇到的問題

2021-10-08 16:29:02 字數 3372 閱讀 9052

元素的獲取

元素的插入

元素的刪除

完整**

在學習線性表的順序儲存結構過程中,typedef了兩個新的結構體,其中乙個為指標形式的命名方式,在查閱資料後才明白這種寫法。本文同時針對順序線性表的元素獲取、元素插入以及元素刪除做了詳細的注釋,在此寫下以備不時之需。

#define maxsize 20

typedef

int elemtype;

typedef

struct

sqlist,

*psqlist;

//typedef 了兩個新的資料型別(結構體),其中乙個是指標方式的名字。

順序儲存結構三個屬性:

儲存空間起始位置:陣列data,他的儲存位置就是儲存空間的儲存位置。

線性表的最大儲存容量:陣列長度maxsize。

線性表的當前長度:length。

關於「線性表的長度」和「陣列的長度」:線性表的當前長度表示的是線性表中元素的個數,會隨著線性表的插入和刪除隨之改變;而陣列的長度是存放線性表的儲存空間長度。線性表的長度應該小於或者等於陣列的長度。

sqlist l =,0

};//sqlist 宣告的l是乙個實體,宣告了就已經有儲存空間了。

psqlist pl =

&l;//psqlist 宣告的pl是乙個指標(但這裡不用加*號,因為psqlist已經被指定為指標),它可以指向乙個struct的實體。

l.length =10;

//l的元素訪問方式,實體方式

pl->length =10;

//pl的元素訪問方式,指標方式

總結:結構體名字去定義宣告的變數是乙個真正的變數,它在記憶體中分配有自己的儲存空間;而用指標形式定義的變數是乙個指標,使用的時候給它賦予乙個結構體變數的位址。參考。

結構體變數直接訪問使用實體方式,用「.」;

結構體指標變數訪問使用指標方式,用「->」;

/*

功能:元素的獲取

說明:獲取順序線性表l中第i個元素,通過e返回其值

*/status getelem

(sqlist *l,

int i, elemtype *e)

/*

功能:元素的插入

說明:向順序線性表l中插入乙個元素e,l的長度加1

*/status listinsert

(sqlist *l,

int i, elemtype e)

} l->data[i -1]

= e;

//插入新的元素

l->length++

;//表的長度加1

return ok;

}

/*

功能:元素的刪除

說明:刪除順序線性表l的第i個元素,並用e返回其值,並且l的長度減1

*/status listdelete

(psqlist l,

int i, elemtype *e)

} l->length--

;//l的長度減1

return ok;

}

#include

#define maxsize 20

#define ok 1

#define error 0

typedef

int status;

typedef

int elemtype;

typedef

struct

sqlist,

*psqlist;

//typedef 了兩個新的資料型別(結構體),其中乙個是指標方式的名字。

/* 功能:元素的獲取

說明:獲取順序線性表l中第i個元素,通過e返回其值

*/status getelem

(sqlist *l,

int i, elemtype *e)

/* 功能:元素的插入

說明:向順序線性表l中插入乙個元素e,l的長度加1

*/status listinsert

(sqlist *l,

int i, elemtype e)

} l->data[i -1]

= e;

//插入新的元素

l->length++

;//表的長度加1

return ok;}/*

功能:元素的刪除

說明:刪除順序線性表l的第i個元素,並用e返回其值,並且l的長度減1

*/status listdelete

(psqlist l,

int i, elemtype *e)

} l->length--

;//l的長度減1

return ok;

}int

main

(void),

0};//sqlist 宣告的l是乙個實體,宣告了就已經有儲存空間了。

psqlist pl =

&l;//psqlist 宣告的pl是乙個指標(但這裡不用加*號,因為psqlist已經被指定為指標),它可以指向乙個struct的實體。

l.length =10;

//l的元素訪問方式,實體方式

pl->length =10;

//pl的元素訪問方式,指標方式

status s =0;

int i =2;

elemtype get_elem =0;

elemtype insert_elem =20;

elemtype *e =

&get_elem;

s =listinsert

(pl, i, insert_elem)

;//在第2個元素位置插入新元素20,返回結果

if(s)

//如果插入成功則讀取第2個元素

printf

("--------\n");

s =listdelete

(pl, i, e)

;//刪除第2個元素,返回結果

if(s)

//如果刪除成功則讀取第2個元素

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性表 線性表的順序儲存結構

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...

線性表 線性表的順序儲存結構

include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...