Удалить из списка элементы, которые больше 25 - C++
Определить среднее значение элементов списка со значениями меньше либо равными 15. Удалить из списка элементы, которые больше 25.
Удаление не работает. Подскажите пожалуйста в чем ошибка.
Код:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct L
{
int value;
L* nextItem;
L* prevItem;
};
void printList(L* List)
{
L *currentItem=List;
while(currentItem)
{
cout<<("%f\n", currentItem->value)<<" ";
currentItem=currentItem->nextItem;
};
}
L* createList(int size)
{
int elem;
L* List=new L;
L* currentItem=List;
L* prev;
cout<<"Vvedite element: "<<endl;
cin>>elem;
List=new L;
List->value=elem;
List->nextItem=NULL;
currentItem=List;
for(int num=2;num<=size;num++)
{
cin>>elem;
prev=currentItem;
currentItem=new L;
currentItem->value=elem;
currentItem->nextItem=NULL;
prev->nextItem=currentItem;
};
return List;
}
L* Average(L *first, int n)
{
struct L *currentItem;
currentItem=first;
float s=0;
int i=0;
while(currentItem!=NULL)
{
if(currentItem->value<=15)
{
s=s+currentItem->value;
i++;
}
currentItem=currentItem->nextItem;
}
if(i>0)
s=s/i;
printf("%1.2f",s);
printf("\n");
return first;
}
void Delete(L* first)
{
L*Del=first;
while(Del)
{
first=first->nextItem;
delete Del;
Del=first;
}
}
L* Killer(L *first, int n)
{
L *currentItem=first;
for(int i=n; i>0; i--)
{
if(currentItem->value>25)
{
delete currentItem;
}
return first;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
L *first=0;
int n;
printf("Vvedite kolichestvo elementov: ");
scanf("%d",&n);
printf(": ");
first=createList(n);
printf(" ");
printList(first);
printf("\n");
printf("Srednie znachenie: ");
Average(first, n);
Killer(first,n);
printList(first);
system("pause");
delete(first);
return 0;
}
|