線性表的基本操作
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)
線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。#include
#include
#define ok 1
#define error 0
#define overflow -1
#define true 1
#define false 0
#define elemtype int
#define list_init_size 100
#define listincrement 10
typedef
struct
sqlist;
操作結果:構造乙個空的線性表l。typedef
struct lnodelnode,
*linklist;
int
initlist_sq
(sqlist &l)
初始條件:線性表l已存在。int
initlist_l
(linklist &l)
操作結果:銷毀線性表l。
void
destroylist_sq
(sqlist &l)
初始條件:線性表l已存在。void
destroylist_l
(linklist &l)
free
(p);
}
操作結果:將l重置為空表。
void
clearlist_sq
(sqlist &l)
初始條件:線性表l已存在。void
clearlist_l
(linklist &l)
}
操作結果:若l為空表,則返回true,否則返回false。
int
listempty_sq
(sqlist l)
初始條件:線性表l已存在。int
listempty_l
(linklist l)
操作結果:返回l中資料元素個數。
int
listlength_sq
(sqlist l)
初始條件:線性表l已存在,1<=i<=listlength(l)。int
listlength_l
(linklist l)
return k;
}
操作結果:用e返回l中第i個資料元素的值。
int
getelem_sq
(sqlist l,
int i, elemtype &e)
初始條件:線性表l已存在。int
getelem_l
(linklist l,
int i, elemtype &e)if(
!p || j>i)
return error;
e = p->data;
return ok;
}
操作結果:若cur_e是l的資料元素,且不是第乙個,則用pre_e返回它的前驅,否則操作失敗,pre_e無定義。
int
priorelem_sq
(sqlist l, elemtype cur_e, elemtype &pre_e)
}return error;
}
初始條件:線性表l已存在。int
priorelem_l
(linklist l, elemtype cur_e, elemtype &pre_e)
p=p->next;
}return error;
}
操作結果:若cur_e是l的資料元素,且不是最後乙個,則用next_e返回它的後繼,否則操作失敗,next_e無定義。
int
nextelem_sq
(sqlist l, elemtype cur_e, elemtype &next_e)
}return error;
}
初始條件:線性表l已存在,1<=i<=listlength(l)+1。int
nextelem_l
(linklist l, elemtype cur_e, elemtype &next_e)
p=p->next;
}return error;
}
操作結果:在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;
}
初始條件:線性表l已存在且非空,1<=i<=listlength(l)。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的第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 表中元素都是資料元素,每個元素都是單個...