資料結構(C語言版) 第二章 線性表

2021-09-28 21:47:48 字數 3908 閱讀 3722

線性表的基本操作

destroylist(&l)

clearlist(&l)

listempty(l)

listlength(l)

getelem(l, i, &e)

priorelem(l, cur_e, &pre_e)

nextelem(l, cur_e, &next_e)

listinsert(&l, i, e)

listdelete(&l, i, &e)

#include

#include

#define ok 1

#define error 0

#define overflow -1

#define true 1

#define false 0

#define elemtype int

線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。

#define list_init_size 100

#define listincrement 10

typedef

struct

sqlist;

typedef

struct lnodelnode,

*linklist;

操作結果:構造乙個空的線性表l。

int

initlist_sq

(sqlist &l)

int

initlist_l

(linklist &l)

初始條件:線性表l已存在。

操作結果:銷毀線性表l。

void

destroylist_sq

(sqlist &l)

void

destroylist_l

(linklist &l)

free

(p);

}

初始條件:線性表l已存在。

操作結果:將l重置為空表。

void

clearlist_sq

(sqlist &l)

void

clearlist_l

(linklist &l)

}

初始條件:線性表l已存在。

操作結果:若l為空表,則返回true,否則返回false。

int

listempty_sq

(sqlist l)

int

listempty_l

(linklist l)

初始條件:線性表l已存在。

操作結果:返回l中資料元素個數。

int

listlength_sq

(sqlist l)

int

listlength_l

(linklist l)

return k;

}

初始條件:線性表l已存在,1<=i<=listlength(l)。

操作結果:用e返回l中第i個資料元素的值。

int

getelem_sq

(sqlist l,

int i, elemtype &e)

int

getelem_l

(linklist l,

int i, elemtype &e)if(

!p || j>i)

return error;

e = p->data;

return ok;

}

初始條件:線性表l已存在。

操作結果:若cur_e是l的資料元素,且不是第乙個,則用pre_e返回它的前驅,否則操作失敗,pre_e無定義。

int

priorelem_sq

(sqlist l, elemtype cur_e, elemtype &pre_e)

}return error;

}

int

priorelem_l

(linklist l, elemtype cur_e, elemtype &pre_e)

p=p->next;

}return error;

}

初始條件:線性表l已存在。

操作結果:若cur_e是l的資料元素,且不是最後乙個,則用next_e返回它的後繼,否則操作失敗,next_e無定義。

int

nextelem_sq

(sqlist l, elemtype cur_e, elemtype &next_e)

}return error;

}

int

nextelem_l

(linklist l, elemtype cur_e, elemtype &next_e)

p=p->next;

}return error;

}

初始條件:線性表l已存在,1<=i<=listlength(l)+1。

操作結果:在l中第i個位置之前插入新的資料元素e,l的長度加1。

int

listinsert_sq

(sqlist &l,

int i, elemtype e)

q =&(l.elem[i-1]

);for(p =

&(l.elem[l.length-1]

);p>=q;

--p)

*(p+1)

=*p;

*q = e;

++l.length;

return ok;

}

int

listinsert_l

(linklist &l,

int i, elemtype e)if(

!p||j>i-1)

return error;

s =(linklist)

malloc

(sizeof

(lnode));

s->data = e;

s->next = p->next;

p->next = s;

return ok;

}

初始條件:線性表l已存在且非空,1<=i<=listlength(l)。

操作結果:刪除l的第i個資料元素,並用e返回其值,l的長度減1。

int

listdelete_sq

(sqlist &l,

int i, elemtype &e)

int

listdelete_l

(linklist &l,

int i, elemtype &e)if(

!(p->next)

||j>i-1)

return error;

q = p->next;

p->next = q->next;

e = q->data;

free

(q);

return ok;

}

資料結構(C語言版)第二章線性表之順序儲存結構

一 線性表的型別定義 1 線性結構的特點 在資料元素的非空有限集合中,1 存在唯一的乙個 第乙個 或 最後乙個 資料元素 2 除第乙個元素外,每個資料元素只有乙個前驅 3 除最後乙個元素外,每個資料元素只有乙個後繼 2 線性表中的元素是多種多樣的,但同一線性表中的元素必定有相同的特性,相鄰資料元素之...

資料結構 第二章 線性表

線性表 是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。線性表的特點 線性表的九種基本操作 initlist l 初始化表。構造乙個空的線性表。destroylist l 銷毀操作。銷毀線性表,並釋放線性表l所占用的記憶體空間。locateelem l,e 按值查...

資料結構 第二章 線性表

線性表 順序儲存 鏈式儲存 順序表單鍊錶 雙鏈表迴圈鍊錶 靜態鍊錶 陣列指標實現 借助陣列實現 定義 線性表是具有相同資料型別的n n 0 個資料元素的有限序列,其中n為表長,當n 0時該線性表是乙個空表。特點 1 個數有限 2 表中元素具有邏輯上的順序性。3 表中元素都是資料元素,每個元素都是單個...