#include<iostream> #include <stdlib.h> using namespace std; #define list_size 10000 #define listincreament 10000 typedef int element; typedef int Status; typedef struct { element *elem; int listsize; int length; } Sqlist; Status initializer_list(Sqlist &L) //初始化 { L.elem = new int[list_size]; if(!L.elem) return -1; L.length=0; L.listsize = list_size; return 0; } Status creatnewlist(Sqlist &L,int n) //创建顺序表 { int i; L.elem = new int[list_size]; if(!L.elem) return -1; else { for(i=0;i<n;i++) { cin>>L.elem[i]; L.length++; } } return 0; } /*Status Delete(Sqlist &L,int i) //删除循序表中第i个元素; { if(i<1 &&i>L.length+1) { return -1; } else { for(int j=i;j<L.length;j++) { L.elem[j] = L.elem[j+1]; } L.length--; return 0; } } */ Status Remove(Sqlist &L) { int i;int *p=L.elem,*q=L.elem + L.length; for(;p<q;p++) { for(int *t=p+1;t<q;t++) { if(*p==*t) { for(int *k=t;k<q-1;k++) { *k=*(k+1); } L.length--;//删除重复元素,顺序表长度-1; q--; t--;//重复元素被覆盖,退一个,指向覆盖重复元素的新元素 } } } return 0; } void display(Sqlist &L) //输出顺序表中的所有元素 { int i; for(i=0;i<L.length-1;i++) { cout<<L.elem[i]<<" "; } cout<<L.elem[i]<<endl; } int main() { Sqlist L; int n,m,i,T; cin>>n; while(n--) { cin>>m; initializer_list(L); creatnewlist(L,m); Remove(L); display(L); } return 0; }
转载于:https://www.cnblogs.com/CCCrunner/p/6444619.html