線性表與13個基本操作的實現

2021-08-27 16:27:13 字數 1713 閱讀 2427

list_init_size : 線性表初始資料元素容量

infeasible :0

二、線性表結構體

typedef struct

sqlist;

三、13個基本操作

建立線性表,清空線性表,銷毀線性表

判空線性表,判滿線性表,獲得當前資料元素個數

獲得指定位置的資料元素,定位符合一定條件的資料元素

獲得乙個資料元素的前驅,獲得乙個元素的後繼

插入資料元素,刪除資料元素

遍歷線性表

1、建立線性表

初始條件:乙個未初始化的線性表結構體

int initlist(seqlist &l)

2、清空線性表

初始條件:線性表存在

操作結果:清空線性表(將當前元素個數賦值0,清除線性表中的元素)

int clearlist(seqlist &l)

3、銷毀線性表

初始條件:線性表已存在

操作結果:銷毀線性表

status destroy(seqlist &l)

4、判空線性表

初始條件:線性表存在

操作結果:線性表為空返回true,不為空返回false

bool listempty(seqlist l)//不需要對線性表的成員變數進行改變,所以不使用引用

5、判滿線性表

初始條件:線性表存在

操作結果:若線性表已滿返回true,否則返回false

bool listfull(sqlist l)

6、獲取線性表當前元素個數

初始條件:線性表已存在

操作結果:返回線性表當前元素個數

int listlength(seqlist l)

7、獲得指定位置的資料元素

初始條件:線性表存在

操作結果:獲得指定位置的資料元素並賦值給e

int getelem(sqlist l,int i, elemtype &e)

8、定位元素(獲得符合一定條件的資料元素的位序)

初始條件:線性表已存在

操作結果:返回l中第乙個與e滿足關係的元素的位序,若不存在返回0

(注意:compare()表示乙個關係判定函式,滿足返回值為1,否則返回值為2,使用函式指標,方便呼叫)

int locateelem(sqlist l,elemtype e,status(*compare)(elemtype,elemtype))

9、返回前驅

初始條件:線性表已存在,資料元素存在前驅

操作結果:查詢資料元素,若線性表中有該元素且前驅存在,將前驅拷貝給乙個與資料元素資料型別相同的變數;若前驅不存在,上述變數無定義

//返回前驅,equal要提前宣告

status priorelem(sqlist l,elemtype cur_e,elemtype &pre_e)

{ int a;

a=locateelem(l,cur_e,equal);

if(!a||a==1)

{ cout<<」查詢失敗」<

線性表(順序表) 基本操作 實現

定義 資料型別相同的n個元素構成的有限序列 所有呈遞增關係的整數不屬於線性表 無限 特點 線性表是線性結構,線性結構的基本特點是 除第乙個元素無直接前驅,最後乙個元素無直接後繼外,其他每個資料元素都有乙個前驅和後繼 位序 線性表中 第i個 元素,它的位序是從 1 開始的 區別陣列下標從 0 開始 用...

線性表基本操作

線性表基本操作,暑假把大一的 練習一遍。多多指教,謝謝 include include define true 1 define false 0 define ok 1 define error 0 define overflow 1 define list init size 100 typede...

線性表基本操作

線性表的基本操作,靜態分配實現 include include using namespace std define maxsize 50 typedef int elemtpye 靜態分配 typedef structsqlist 動態分配 插入元素,i代表插入的位置,從0開始 bool list...