(一)数组实现线性表
1.定义集合(结构体实现)
1 #define MAX 10 2 typedef struct { 3 int DATA[MAX]; 4 int last; 5 }LIST;
DATA数组用于存放整型数据,last表示最后元素的下标
2.定义各类操作
a.创建空表
LIST *MakeEmpty() { LIST *PtrL; PtrL = (LIST *)malloc(sizeof(LIST)); PtrL->last = -1; return PtrL; }
b.插入数据
void Insert(int x, LIST *ptrl, int i) { if (ptrl->last == MAX - 1) { printf("表满"); return; } if (i<1 || i>ptrl->last + 2) { printf("位置不合法"); return; } int j; for (j = ptrl->last; j >= i - 1; j--) { ptrl->DATA[j + 1] = ptrl->DATA[j + 1]; } ptrl->DATA[i - 1] = x; ptrl->last++; return; }
c.查找
int Find(LIST *ptrl, int data) { int i = 0; while (i <= ptrl->last&&ptrl->DATA[i] != data) i++; if (i > ptrl->last) return -1; else return i; }
d.删除
void Delete(LIST *l, int i) { int j; if (i<1 || i>l->last + 1) { printf("不存在该位置!"); return; } for (j = i; j <= l->last; j++) { l->DATA[j - 1] = l->DATA[j]; } l->last--; }
e.打印(遍历)
void Print(LIST *l) { int i; for (i = 0; i <= l->last; i++) printf("%d ", l->DATA[i]); }
完整实现
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define MAX 10 4 typedef struct { 5 int DATA[MAX]; 6 int last; 7 }LIST; 8 9 LIST *MakeEmpty() { 10 LIST *PtrL; 11 PtrL = (LIST *)malloc(sizeof(LIST)); 12 PtrL->last = -1; 13 return PtrL; 14 15 } 16 17 int Find(LIST *ptrl, int data) { 18 int i = 0; 19 while (i <= ptrl->last&&ptrl->DATA[i] != data) 20 i++; 21 if (i > ptrl->last) 22 return -1; 23 else 24 return i; 25 } 26 27 void Insert(int x, LIST *ptrl, int i) { 28 if (ptrl->last == MAX - 1) { 29 printf("表满"); 30 return; 31 } 32 if (i<1 || i>ptrl->last + 2) { 33 printf("位置不合法"); 34 return; 35 } 36 int j; 37 for (j = ptrl->last; j >= i - 1; j--) { 38 ptrl->DATA[j + 1] = ptrl->DATA[j + 1]; 39 } 40 ptrl->DATA[i - 1] = x; 41 ptrl->last++; 42 return; 43 } 44 45 void Delete(LIST *l, int i) { 46 int j; 47 if (i<1 || i>l->last + 1) { 48 printf("不存在该位置!"); 49 return; 50 } 51 for (j = i; j <= l->last; j++) { 52 l->DATA[j - 1] = l->DATA[j]; 53 } 54 l->last--; 55 } 56 57 void Print(LIST *l) { 58 int i; 59 for (i = 0; i <= l->last; i++) 60 printf("%d ", l->DATA[i]); 61 }
时间: 2024-10-12 16:24:20