1. 程式人生 > 其它 >順序表--刪除陣列中相同的元素(期中考)

順序表--刪除陣列中相同的元素(期中考)

#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);
}