#include <stdio.h> #include <stdlib.h> #define MAX 100 #define NULL 0 struct list /*定义顺序表存储结构*/ {int data_list[MAX]; int last; }; typedef struct list LIST;
LIST createlist(void) /*创建顺序表*/ {LIST sqlist; int i,x,ret; printf("\n****此步操作为输入顺序表的长度******************** "); printf("\n****注意如果你输入的为非int类型,将自动重新输入****\n"); do { printf("在这里输入长度---->>> " ); ret = scanf( "%d", &sqlist.last ); while ( getchar() != '\n' ); } while ( ret != 1 );
fflush(stdin); printf("\n↓请输入顺序表的数据↓\n"); for(i=1;i<=sqlist.last;i++) {printf("输入第%d个数据:",i); scanf("%d",&x); sqlist.data_list[i]=x; } return(sqlist); }
void outlist(LIST l) /*输出顺序表*/ {int i; printf("\n顺序表的长度:%d\n",l.last); printf("顺序表的数据:"); for(i=1;i<=l.last;i++) printf("%d ",l.data_list[i]); printf("\n"); }
LIST inslist(LIST l,int i,int x) /*顺序表插入 i表示插入位置 x表示插入的数据*/ {int j; if(l.last>MAX) {printf("\n顺序表已满!!\n"); return(l);} else if(i<1||i>l.last) {printf("\n插入的位置出错!!\n"); return(l);} else{ for(j=l.last;j>=i;j--) l.data_list[j+1]=l.data_list[j]; l.data_list[i]=x; l.last++; return(l);} }
LIST delist(LIST l,int i) /*顺序表删除 i表示删除位置*/ {int j; if(i<1||i>l.last) {printf("\n删除出错!!\n"); return(l);} else {for(j=i+1;j<=l.last;j++) l.data_list[j-1]=l.data_list[j]; l.last--; return(l);} }
void main() /*实验一:顺序表的基本运算*/ { LIST a; int i,x,j; a=createlist(); outlist(a); printf("\n请输入插入位置:"); scanf("%d",&i); printf("\n请输入插入数据:"); scanf("%d",&x); a=inslist(a,i,x); outlist(a); printf("\n请输入删除数据的位置:"); scanf("%d",&j); a=delist(a,j); outlist(a); }
|