А теперь код. Он похож на предыдущей, только вместо pLast и prev используем pFirst и next:
typedef struct S2{int a; int b; S2* next;} S2_t;
// одно связанный список
S2_t *p2=0, *pLast2=0, *pFirst=0;
//построение списка
for(int i=0;i<10;++i)
{
p2=(S2_t *)malloc(sizeof(S2_t));
memset(p2,0,sizeof(S2_t));
p2->a=i;
p2->b=i+10;
if(pLast2)
pLast2->next=p2;
else
pFirst=p2;
pLast2=p2;
}
//работа со списком
p2=pFirst;
while(p2){
printf("a: %d b: %d\n", p2->a,p2->b);
p2=p2->next;
}
//Удаляем четные элементы
p2=pFirst;
S2_t* p22=pFirst;
while(p2){
if(!(p2->a&1)){
if(p2==pFirst){
p22=p2->next;
pFirst=p22;
free(p2);
p2=p22;
}else{
p22->next=p2->next;
free(p2);
p2=p22->next;
}
}else{
p22=p2;
p2=p2->next;
}
}
printf("After removing:\n");
p2=pFirst;
while(p2){
printf("a: %d b: %d\n", p2->a,p2->b);
p2=p2->next;
}
//удаление списка
p2=pFirst;
while(p2){
pFirst=p2->next;
free(p2);
p2=pFirst;
}
Комментариев нет:
Отправить комментарий