順序表--刪除陣列中相同的元素(期中考)
阿新 • • 發佈:2021-11-18
#include "stdio.h" #include "stdlib.h" #define MAXSIZE 15 //順序表最大長度 #define ERROR 0 #define OK 1 typedef struct Seqlist { int data[MAXSIZE]; int length; //順序表實際長度 }Seqlist; Seqlist *init_list(int dt[], int len){ //初始化順序表函式,採用malloc或new為L分配空間, //並將dt陣列中的內容拷貝至L->data中,最後將生成好的順序表指標返回。引數len為dt陣列的長度。 Seqlist* L; L = new Seqlist; if(!L->data) return ERROR; for(int i=0;i<len;i++){ L->data[i]=dt[i]; } L->length=len; return L; } void delete_list_dup(Seqlist *L){ //刪除L中多餘的值相同元素 if(L->length!=0) for(int i=0;i<L->length;i++){ for(int j=i+1;j<L->length;j++){ if(L->data[i]==L->data[j]){ for(int k=j;k<L->length;k++) L->data[k]=L->data[k+1]; i--; L->length-=1; } } } else printf("空表!!"); } void print_list(Seqlist *L){ //列印L->data中的元素,用空格隔開 if(L->length!=0) for(int i=0;i<L->length;i++){ printf("%d ",L->data[i]); } else printf("空表!!"); } main(){ int dt[MAXSIZE]={1,1,2,3,5,5,5,6,10,12,12,15,15,15,15}; Seqlist *L=init_list(dt,sizeof(dt)/sizeof(int)); delete_list_dup(L); print_list(L); }