有一个单向链表,头指针为L,结点的数据域是一个整数,将链表L中奇数值的结点重新组成一个新的链表NEW,并输出新建链表。
输入格式:输入若干个整数,以-1结束输入
输出格式:数值之间以一个空格分隔,最后一个数值后面没有空格
输入样例:
1 2 3 4 5 6 7 -1
输出样例:
1 3 5 7
两种思路一种时在输入时就判断奇偶,建立奇数链表,一种是把输入的数据都存入链表,在输出时在判断奇偶。当时把两种思路混淆,浪费了大量的实时间。//第二种加空格不妨先输出一个数,在输出空格数据(当然只是猜测没有进行尝试)
#include <stdio.h>
#include <stdlib.h>
struct stud_node {
int num;
struct stud_node *next;
};
int main()
{
struct stud_node *p,*s,*head=NULL,*tail=NULL;
int a;
while (1)
{
scanf("%d",&a);
if(a==-1)
break;
if(a%2!=0)
{
s = (struct stud_node*)malloc(sizeof(struct stud_node));
s->num = a;
s->next=NULL;
if(head==NULL)
{
head = s;
}
else
{
tail->next = s;
}
tail = s;
}
}
for (p=head;p!=NULL;p=p->next)
{
if(p->num%2!=0)
{
if(p->next!=NULL)
printf("%d ",p->num);
else
printf("%d",p->num);
}
}
}
本文探讨了如何从一个单向链表中筛选出所有奇数值的节点,并将其重组为新的链表。提供了两种实现思路:一是在输入时即时判断奇偶并建立新链表;二是先将所有数据存入链表,再进行奇偶判断。同时,文章分享了作者在实现过程中的常见错误及解决策略。
4894

被折叠的 条评论
为什么被折叠?



