//在程序没有调通时,不要复制,否则复制的地方都出错 #include <stdio.h> #include <stdlib.h> #include "link.h"
void main(void) { sequentlist *L; int ch,n,i; while(1) { printf("\n please choise:\n"); printf("1.input list\n"); printf("2.insert list\n"); printf("3.del list\n"); printf("4.end\n"); ch = getch(); switch(ch) { case '1': printf("input the num of data:"); scanf("%d", &n); printf("\n"); L = (sequentlist *)malloc(sizeof(sequentlist)); for(i = 0; i < n; i++) { printf("输入第%d个数:\n",i); scanf("%d", &L->data[i]); } L->last = n -1; printf("输入的数据表为:\n"); for(i = 0; i <= L->last ; i++) { printf("data[%d] = %d\n", i, L->data[i]); } break; case '2': printf("\n输入要插入数据的位置:"); scanf("%d", &i); printf("\n输入要插入的数据:"); scanf("%d", &n); printf("\n"); if(insert(L,n,i)) { printf("\n插入后的顺序表为:\n"); for(i = 0; i <= L->last; i++) { printf("data[%d] = %d\n", i, L->data[i]); } } break; case '3': printf("\n输入要删除数据的位置:"); scanf("%d", &i); printf("\n"); if(del(L,i)) { printf("\n删除后的顺序表为:\n"); for(i = 0; i <= L->last; i++) { printf("data[%d] = %d\n", i, L->data[i]); } } break; default: printf("no\n");break;
} } return; } //插入数到位置i
int insert(sequentlist *L, datatype x, int i) { int j; printf("%d",x); if(L->last > maxsize - 1) printf("no enough size\n"); else if(i < 1 || i >L->last + 2) //分清楚下标i-1和位置i
printf("illeague insert\n"); else { for(j = L->last; j >= i - 1; j--) { L->data[j + 1] = L->data[j]; } L->data[i - 1] = x; printf("\n%d\n",L->data[i-1]); L->last += 1; } return 1; } //将位置i处的数删除
int del(sequentlist *L, int i) { int j; if(i < 1 || i > L->last+1) { printf("illeague del\n"); return 0; } else { for(j = i; j <= L->last; j++) { L->data[j-1] = L->data[j]; } L->last = L->last - 1; } return 1; }
|