题目链接:点击打开链接
题目大意:略。
解题思路:题目说删除了,其实可以转化为再搞一个获取奇数时的做法来做偶数的情况,最后把地址赋值给L,这样思路就简单许多~。还有这里带两个星号的L,其实多了一个星号是因为传参时,传进去的是指针变量的地址(此地址非内容)。
AC 代码
structListNode*readlist() { structListNode*h, *p, *pre; intda, fst=1; while(~scanf("%d", &da) &&da!=-1) { p=(structListNode*)malloc(sizeof(structListNode)); p->data=da; if(!fst) pre->next=p, pre->next->next=NULL, pre=pre->next; if(fst) pre=h=p, fst=0; } returnh; } structListNode*getodd( structListNode**L ) { structListNode*p, *pre1, *pre2, *h1=NULL, *h2=NULL; intf1=1, f2=1, da; while(*L) { da=(*L)->data; if(da%2) { p=(structListNode*)malloc(sizeof(structListNode)); p->data=da; if(!f1) pre1->next=p, pre1->next->next=NULL, pre1=pre1->next; if(f1) pre1=h1=p, f1=0; } else { p=(structListNode*)malloc(sizeof(structListNode)); p->data=da; if(!f2) pre2->next=p, pre2->next->next=NULL, pre2=pre2->next; if(f2) pre2=h2=p, f2=0; } *L=(*L)->next; } *L=h2; returnh1; }