输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的奇数值结点删除后输出#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
int data;
struct Node *next;
}No;
No* createlist()
{
No * head;
No * p,* pre;
int i,a;
head=(No*)malloc(sizeof(No));
head->next=NULL;
pre=head;
while(scanf("%d",&a))
{
if(a!=-1)
{
p=(No*)malloc(sizeof(No));
p->data=a;
pre->next=p;
pre=p;
}
else
{
pre->next=NULL;
break;
}
}
return head;
}
void print(No*head)
{
int i,n=0;
No* q=head;
No*h=head->next;
while(h)
{
if((h->data)%2!=0)
{
q->next=h->next;
h=h->next;
}
else{
q=h;
h=h->next;
}
}
free(h);
while(head->next->next)
{
printf("%d ",head->next->data);
head=head->next;
}
printf("%d",head->next->data);
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
print(createlist());
printf("\n");
}
return 0;
}输入样例:2 (repeat=2)
1 2 3 4 5 6 7 -1
1 3 5 -1输出样例:2 4 6
添加回答
举报
0/150
提交
取消