今天写了顺序表的一些操作:
1.求顺序表的长度。
2.输出顺序表的元素。
3.顺序表的插入。
4.顺序表的删除。
5.顺序表的查找。
6.顺序表的排序。
在写的过程中遇到了些许困难,好多都是细节错误,if后面写了分号,导致后面的语句没有按规则执行,输入少了地址符等等。
以下是我写的代码:
1 #include"stdio.h" 2 #define Maxsize 30 3 typedef struct 4 { 5 int data[Maxsize]; 6 int n; 7 }Sqlist; 8 int Length(Sqlist *L) /*求顺序表的长度函数*/ 9 { 10 int i; 11 printf("请输入长度:"); 12 scanf("%d",&L->n); 13 putchar(32); 14 for(i=0;in;i++) 15 { 16 printf("请输入第%d个元素:",i+1); 17 scanf("%d",&L->data[i]); 18 putchar(32); 19 } 20 return L->n; 21 } 22 void print(Sqlist *L)/*输出顺序表的元素*/ 23 { 24 int i; 25 for(i=0;i n;i++) 26 printf("%-2d",L->data[i]); 27 } 28 int insert(Sqlist *L,int x,int i)/*在顺序表中插入一个元素*/ 29 { int j; 30 if(i<0||i>L->n+1) return 0; 31 for(j=L->n;j>=i;j--) 32 L->data[j]=L->data[j-1]; 33 L->data[i-1]=x; 34 L->n++; 35 return L->n; 36 } 37 int del(Sqlist *L,int x)/*在顺序表中删除一个元素*/ 38 { 39 int i; 40 for(i=0;i n;i++) 41 { 42 if(L->data[i]==x) 43 { 44 for(;i n-1;i++) 45 L->data[i]=L->data[i+1]; 46 L->n--; 47 return L->n; 48 } 49 } 50 if(i>=L->n) return 0; 51 } 52 void found(Sqlist *L,int x)/*顺序表的查找*/ 53 { 54 int i; 55 for(i=0;i n;i++) 56 { 57 if(L->data[i]==x) 58 { 59 printf("%d的逻辑位置是第:%d个\n",x,i+1); 60 break; 61 } 62 } 63 if(i>=L->n) 64 printf("Not found\n"); 65 } 66 void Sort(Sqlist *L)/*顺序表的排序*/ 67 { 68 int i,j,t; 69 for(i=0;i n-1;i++) 70 for(j=0;j n-1-i;j++) 71 if(L->data[j] data[j+1]) 72 { 73 t=L->data[j]; 74 L->data[j]=L->data[j+1]; 75 L->data[j+1]=t; 76 } 77 for(i=0;i n;i++) 78 printf("%-2d",L->data[i]); 79 } 80 main() 81 { 82 Sqlist L; 83 int length,x,i,t; 84 length=Length(&L); 85 printf("顺序表的长度是:%d",length); 86 printf("\n"); 87 printf("输出顺序表的元素:"); 88 print(&L); 89 printf("\n"); 90 printf("请输入要插入的数,和逻辑位置:"); 91 scanf("%d%d",&x,&i); 92 t=insert(&L,x,i); 93 if(t) 94 { 95 printf("插入成功\n"); 96 printf("输出插入之后的元素:"); 97 print(&L); 98 printf("\n"); 99 printf("顺序表的长度为:%d\n",t); 100 }101 else printf("插入失败\n");102 printf("请输入要删除的数:"); 103 scanf("%d",&x);104 t=del(&L,x);105 if(t) 106 {107 printf("删除成功\n");108 printf("输出删除之后的元素:");109 print(&L);110 printf("\n");111 printf("顺序表的长度为:%d\n",t); 112 }113 else printf("删除失败\n");114 printf("请输入要查找的数:");115 scanf("%d",&x);116 found(&L,x);117 printf("将顺序表的元素从大到小排序:");118 Sort(&L);119 120 }