1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERR 0 #define MAXSIZE 100
typedef struct list{ int elem[MAXSIZE]; int last; }SeqList;
SeqList *InitList() { SeqList *L; L = (SeqList *)malloc(sizeof(SeqList)); L->last = 0; return L; }
int Locate(SeqList *L,int e) { int i=0; for (i;i<L->last-1;i++) { if (L->elem[i]==e) { return i+1; } } return -1; }
int InsList(SeqList *L,int i,int e) { int k; if (i<1||i>L->last+1) { printf("插入位置不合法!"); return ERR; } if (L->last>=MAXSIZE) { printf("表已满,无法插入!"); return ERR; } for (k=L->last-1;k>=i;k--) { L->elem[k+1]=L->elem[k]; } L->elem[i-1]=e; L->last++; return OK; }
int DelList(SeqList *L,int i,int *e) { int k; if (i<1||i>L->last) { printf("删除位置不合法!"); return ERR; } *e=L->elem[i-1]; for (k=i-1;k<L->last;k++) { L->elem[k]=L->elem[k+1]; } L->last--; return OK; }
void print_seqList(SeqList *L) { int j; for (j=1;j<=L->last;j++) { printf("%d\t",L->elem[j-1]); if (j%5==0) { printf("\n"); } } } int main() { SeqList *L; L=InitList(); int a,j,locate,e; for (j=1;j<10;j++) { printf("请输入要插入的数字:\n"); scanf("%d",&a); InsList(L,a,j); } printf("\n"); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("插入后的列表为:\n"); print_seqList(L); printf("\n"); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("查找元素5是否存在,显示下标:\n"); locate = Locate(L,5); printf("%d\n",locate); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("删除第7个元素,返回被删除的元素:\n"); DelList(L,7,&e); printf("被删除的元素是:%d\n",e); return 0; }
C
|