输入若干个正整数(输入-1为结束标志),并建立一个单向链表,将其中的偶数值结点删除后输出。

急,感激不尽!!

第1个回答  推荐于2018-04-05
//希望对楼主有小小的帮助。。。
#include<stdio.h>
struct elem
{
int data;
elem *next;
};
void main()
{
int temp;
//head指向链表头元素。tail指向链表最后元素,tempP是个临时存放地址
//frontP指向即将删除元素的前一个元素,deleteP指向将要删除的元素
elem * head,*tail,*tempP,*frontP,*deleteP;
head=tail=NULL;
//读取信息
scanf("%d",&temp);
while(-1!=temp)
{
if(head==NULL)
{
tail=head=new elem;
head->data=temp;
head->next=NULL;
}
else
{
tempP=new elem;
tempP->data=temp;
tempP->next=NULL;
tail->next=tempP;
tail=tempP;
}
scanf("%d",&temp);
}
//删除偶数
tempP=head;
while(NULL!=tempP)
{
if(0==tempP->data%2)
{
if(tempP==head)
{
head=tempP->next;
}
else
{
//找到偶数的前一个数,该数的next指向偶数的next;
for(frontP=head;NULL!=frontP;++frontP)
{
if(frontP->next==tempP)
{
frontP->next=tempP->next;
break;
}
}
}
}
deleteP=tempP;
tempP=tempP->next;
if(0==deleteP->data%2)
delete deleteP;
}
//打印数据
tempP=head;
while(NULL!=tempP)
{
printf("%d\n",tempP->data);
deleteP=tempP;
tempP=tempP->next;
delete deleteP;
}
}本回答被提问者和网友采纳
相似回答