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 }
时间: 2024-11-08 18:55:14