線性表定義:長度為n的有序元祖。當n = 0時稱為空表。線性表的基本操作是插入和刪除。
線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素。
線性表的順序儲存結構是一種隨機訪問的儲存結構。
線性表第i個資料元素ai的儲存位置是:loc(ai) = loc(a1) + (i - 1)l(l為每個元素需占用的儲存單元)。
標頭檔案如下:
/*
順序表頭檔案
*/#ifndef head_h_included
#define head_h_included
#define list_init_size 100
#define listadd 10
typedef
int elemtype;
typedef
struct sqlist
;//順序表初始化
bool init_list
(sqlist &l)
;//順序表是否為空
bool isempty
(sqlist l)
;//在指定位置新增元素
bool addelem
(sqlist &l,
int i, elemtype e)
;//刪除指定位置元素
elemtype deleteelembyindex
(sqlist &l,
int i)
;//刪除指定元素
elemtype deleteelembydata
(sqlist &l, elemtype e)
;//查詢元素位置
intselectindex
(sqlist l, elemtype e)
;//查詢指定位置的元素
elemtype selectelem
(sqlist l,
int i)
;//顯示順序表全部元素
void
showup
(sqlist l)
;#endif
// head_h_included
bool init_list
(sqlist &l)
}
//在指定位置之前新增元素
bool addelem
(sqlist &l,
int i, elemtype e)
if(l.length == l.listsize)
elemtype *q =
&(l.elem[i -1]
);for(elemtype *p =
&(l.elem[l.length -1]
); p >= q; p --
)*q = e;
l.length ++
;return true;
}
這份**中採用了指標的寫法,也可以採用陣列的表示方法,會更簡單一些。
for
(int j = l.length; j >= i; j --
) l.elem[i -1]
= e;
//刪除指定位置元素
elemtype deleteelembyindex
(sqlist &l,
int i)
else
l.length --
;return e;}}
//刪除指定元素
intdeleteelembydata
(sqlist &l, elemtype e)
l.length --
;return i +1;
}}return-1
;}
有兩種形式:根據索引刪除元素和刪除第乙個與e相等的元素。
//查詢元素位置
intselectindex
(sqlist l, elemtype e)}}
//查詢指定位置的元素
elemtype selectelem
(sqlist l,
int i)
//顯示順序表全部元素
void
showup
(sqlist l)
printf
("\n");
}
考研筆記 資料結構之鍊錶
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素。這組儲存單元可以是連續的,也可以是不連續的 線性表的鏈式儲存是一種非隨機儲存結構,但是方便插入和刪除。單鏈表的每個結點中只包含乙個指標域,指向下乙個結點。typedef struct slnode node,linklist 構造...
考研資料結構之順序表 待續
順序表專題 include include define maxsize 100 結構體定義 typedef structsqlist function 將元素e插入在順序表中的第i個位置上 param sqllist 待插入的順序表 e 待插入元素 i 插入位置 return 返回成功的標記 in...
筆記 資料結構 線性表 順序表
左側為順序表,右側為鍊錶,區別在於有無在記憶體中順序存放資料。順序表結構 typedef struct tabletable 順序表初始化 table inittable t.length 0 t.size 5 return t 順序表遍歷 void displaytable table t pri...