順序表的操作有初始化、插入元素、取值、查詢元素、刪除元素這五種操作。下面根據個人在嚴蔚敏老師的《資料結構(
c語言版)(第
2版)》中的了解來說明一下。
在初始化之前,我們先設定巨集定義和型別定義:
#define ok1
#define error 0
#define overflow -2
#define maxsize 100
typedef intstatus;
typedef int elemtype;
typedefstructsqlist;
下面是初始化:
status inintlist(sqlist*l)
(*l).length = 0;
return ok;
}
用malloc()
為順序表
l分配足夠的空間長度,由於
malloc()
分配空間成功的話會返回乙個位址,而失敗的話會返回
null
,所以使用
if(!(*l).elem)
判斷分配是否成功,如果分配失敗,則返回
overflow
。並將順序表長度初始化為0。
插入元素:
status listinsert(sqlist*l, int i, elemtype e)
(*l).elem[i - 1] = e;
++(*l).length;
return ok;
}
要在i
個位置插入元素,先把
i之後的元素都後移一位,移完後長度
+1。但必須先判斷第
i個位置是否在順序表中與其他元素相連的位置和順序表是否會溢位。
取值:
status getelem(sqlist l,int i,elemtype *e)
查詢:
int locateelem(sqlist l,elemtype e)
return 0;
}
取值和查詢這一部分個人覺得還是比較簡單的,這裡就不囉嗦了。
刪除元素:
status listdelete(sqlist*l, int i)
--(*l).length;
return ok;
}
要刪除i
位置的元素,需要先判斷
i元素是否在順序表內。並把
i元素之後的元素前移一位,最後把順序表的長度減
1就行了。
加入main()
測試:
int main(void)
else}}
return 0;
}
現在就可以選擇對順序表進行初始化、插入、取值、查詢、刪除的操作了。 順序表的實現(C語言)
指向結構體變數的指標作函式引數 include define maxsize 100 typedef int datatype typedef struct sequence list void init sequence list int empty sequence list slt void ...
順序表的實現(C語言)
include include define maxsize 100 struct list t void print list t int isemtty list t 判斷鍊錶是否為空 void getelement list t,int i 獲取表中第i個元素 下標從0開始 void add ...
順序表 用c語言簡單實現順序表
test.h ifndef seplist h define seplist h include include include include define max 100 define default sz 3 當前預設有效值 define isc sz 2 動態分配預設增長個數 typedef...