c語言的線性表,還沒有完善
1 #include<stdio.h>
2 #define MAXSIZE 100 //初始空間分配量
3 #define OK 1
4 #define ERROR 0
5 #define TRUE 1
6 #define FALSE 1
7 typedef int ElemType; //類型為int
8 typedef int Status;//函數的返回類型,此處為int
9 typedef struct
10 {
11 ElemType data[MAXSIZE];
12 int length;
13 }SqList;
14 /*用e返回獲取的函數值,當i超出線性表范圍,則返回ERROR*/
15 Status GetElem(SqList L,int i,ElemType *e)
16 {
17 if(L.length==0||i<1||i>L.length)
18 return ERROR;
19 *e=L.data[i-1];
20 return OK;
21 }
22 Status LisrInsert(SqList *L,int i,ElemType e)//插入元素操作
23 {
24 int k;
25 if(L->length==MAXSIZE)//線性表已滿
26 return ERROR;
27 if(i<1||i>L->length)//當i不在范圍內
28 {
29 return ERROR;
30 }
31 if(i<=L->length)//插入的數據不在表尾
32 {
33 for(k=L->length-1;k>=i-1;k--)//將插入位置後的數據元素向後移一位
34 L->data[k+1]=L->data[k];
35 }
36 L->data[i-1]=e;//將新元素插入
37 L->length++;
38 return OK;
39 }
40 /*結果,刪除L的第i個元素,並用e返回值,L的長度減一*/
41 Status ListDelete(SqList *L,int i,ElemType *e)
42 {
43 int k;
44 if(L->length==0)//線性表為空
45 return ERROR;
46 if(i<1||i>L->length)//刪除位置不正確
47 return ERROR;
48 *e=L->data[i-1];
49 if(i<L->length)//如果刪除的不是最後的位置
50 {
51 for(k=i;k<L->length;k++)//將刪除位置後繼元素前移
52 L->data[k-1]=L->data[k];
53
54 }
55 L->length--;
56 return OK;
57
58 }
59 /* 初始化順序線性表 */
60 void InitList(SqList *L)
61 {
62 L->length=0;
63
64 }