输入一个正整数 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
杰伦窗外的小麻雀
相关分类