首页 > 代码库 > c语言线性表

c语言线性表

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 }