CTDL
unknown
plain_text
3 years ago
1.7 kB
7
Indexable
void filter(List *L){
Position index = First_List(*L);
while(index != End_List(*L)){
Position index2 = Next(index, *L);
int flag = 1;
while(index2 != End_List(*L) && flag){
if(Retrieve(index, *L) == Retrieve(index2, *L)){
Delete_List(index2, L);
}else{
index2 = Next(index2, *L);
}
}
index = Next(index, *L);
}
}
ElementType Max2_List(List L){
ElementType max = Retrieve(First_List(L), L);
Position index = Next(First_List(L), L);
ElementType second_max = Retrieve(index, L);
index = Next(index, L);
if(index == End_List(L)){
return max < second_max ? max : second_max;
}
while(index != End_List(L)){
ElementType elem = Retrieve(index, L);
if(elem > second_max){
if(elem > max){
second_max = max;
max = elem;
}else{
second_max = elem;
}
}
index = Next(index, L);
}
return second_max;
}
ElementType Min2_List(List L) {
Position P = First_List(L);
int Min1 = Retrieve(P, L);
while (P != End_List(L)) {
if (Retrieve(P, L) < Min1) Min1 = Retrieve(P, L);
P = Next(P, L);
}
P = First_List(L);
int Min2 = 1000000;
while (P != End_List(L)) {
if ((Retrieve(P, L) < Min2) && (Retrieve(P, L) != Min1)) {
Min2 = Retrieve(P, L);
}
P = Next(P, L);
}
return Min2;
}
int Sum_List(List L) {
Position P = First_List(L);
int sum = 0;
while (P != End_List(L)) {
sum += Retrieve(P, L);
P = Next(P, L);
}
return sum;
}Editor is loading...