線性表分為順序儲存結構和鏈式儲存結構
順序結構
接下來看線性表順序儲存的結構**:
#define maxsize 20
typedef
int elemtype;
typedef
struct
sqlist;
#include
#define maxsize 20
#define ok 1
#define error 0
#define true 1
#define false 0
typedef
int status;
typedef
int elemtype;
typedef
struct
sqlist;
// status 是函式的型別,其值是函式結果狀態**,如ok等。
// 初始條件:順序線性表l已存在,1 <= i <= listlength(l)
// 操作結果:用e返回l中第i個資料元素的值。
status getelem
(sqlist l,
int i, elemtype *e)
*e = l.data[i-1]
;return ok;
}/* 初始條件:順序線性表l已存在,1<=i<=l->length+1。 */
/* 操作結果:在l中第i個位置之前插入新的資料元素e,l長度+1。*/
status listinsert
(sqlist *l,
int i, elemtype e)
if( i<
1|| i>l->length+1)
// 當i不在範圍內時,length+1為陣列最後位置之後的位置
if( i <= l->length )
// 若插入資料位置不在表尾
} l->data[i-1]
= e;
// 將新元素插入
l->length++
;return ok;
}/* 初始條件:順序線性表l已存在,1<=i<=listlength(l)。 */
/* 操作結果:在l中第i個位置刪除資料元素e,並用e返回其值,l長度-1。*/
status listdelete
(sqlist *l,
int i, elemtype *e)
if( i<
1|| i>l->length)
// 當i不在範圍內時,length為陣列最後乙個位置
*e = l->data[i-1]
;//返回刪除的元素值
if( i <= l->length-1)
// 若刪除的資料位置不在表尾
} l->length--
;return ok;
}/*列印線性表所有元素(已插入的)*/
void
print_list
(sqlist *l)
printf
("\n");
}int
main()
,1};
int e,i=0;
printf
("please input e:\n");
scanf
("%d"
,&e)
;printf
("please input i:\n");
scanf
("%d"
,&i)
;listinsert
(&list, i, e)
;print_list
(&list)
;printf
("e:%d\n"
,e);
listinsert
(&list, i, e)
;print_list
(&list)
;printf
("e:%d\n"
,e);
listdelete
(&list, i,
&e);
print_list
(&list)
;printf
("e:%d\n"
,e);
}
線性表 線性表的順序儲存結構
線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。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...
線性表 線性表的順序儲存結構
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...