顺序表--删除数组中相同的元素(期中考)

#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);
}
posted @ 2021-11-18 20:39  一只狗狗  阅读(75)  评论(0)    收藏  举报