qq_57626816 2021-06-15 19:58 采纳率: 50%
浏览 389
已采纳

c语言链表题目,该怎么做呢

预设代码中建立了一个带有头结点的单向链表。
编写一个函数,将链表中数值域的数值为偶数的节点移到链表尾部。
如果偶数节点多于一个,则连接到链表尾部节点的先后顺序按原来的顺序。
结构的定义:
struct node
{

int num;

struct node *next;

}
typedef struct node NODE;
函数的原型:NODE *MoveNode( NODE *head )。
其中:参数 head 是单向链表的头指针。函数的返回值是单向链表的头指针。
运行时输入有一行,输入各个节点的数值域的值,输入-1时结束。
例如链表节点数值成员值为:15 6 7 21 2 13 24 -1 //-1 是节点输入结束标志
输出:15 7 21 13 6 2 24

  • 写回答

2条回答 默认 最新

  • Анатолий112 2021-06-15 20:36
    关注
    NODE *MoveNode( NODE * head){  
        NODE *p,*q,*f,*p1,*q1,*I;  
        p=head->next,q1=head,p1=q1->next;  
        f=q1->next;  
        while(p!=NULL) { if(p->no%2!=0) f=p; p=p->next; }  
        q=f->next,I=f;  
         while(p1!=f){  
            if(p1->no%2==0){  
                q1->next=p1->next;  
                I->next=p1;  
                I=p1;  
                p1->next=q;  
                p1=q1->next;  
             }  
             else q1=q1->next,p1=p1->next;   
         }  
        return head;  
    }  

    分段输出就完事了,或者你可以end后面加一个节点。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料