Lance666888 2021-08-04 12:33 采纳率: 0%
浏览 80

下面代码实现(1,2,3,4,5,6,7,8,9,10)变换为(1,10,2,9,3,8,4,7,5,6),哪里出问题了?



```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "malloc.h"

typedef struct node{
    int data;
    struct node *next;
}NODE,*Linklist;

Linklist changlist(Linklist h){            
    NODE *p,*q,*r,*s;    
    p=q=h;
    while(q->next!=NULL){
        p=p->next;
        q=q->next;
        if(q->next!=NULL)
            q=q->next;        
        
    }
    q=p->next;
    p->next=NULL;
    while(q!=NULL){
        r=q->next;
        p->next=q->next;
        q=p->next;
        q=r;
    }
    
    s=h->next;
    q=p->next;
    
    p->next=NULL;
    while(q!=NULL){
        r=q->next;
        q->next=s->next;
        s->next=q;
        s=q->next;
        q=r;
    }
    return h;
}
    
    
void main(){
    Linklist L=(Linklist)malloc(sizeof(NODE));
    NODE *b,*a=L;
    L->data=1;
    L->next=NULL;
    int i;
    for(i=0;i<10;i++)
    {
        b=(NODE *)malloc(sizeof(NODE));
        b->data=i+2;
        a->next=b;
        a=b;
    }
    
    a->next=NULL;
    
    changlist(&L);
    
    int j;    
    for(j=0;j<10;j++)
    {
        printf("%d",L->data);
        L=L->next;

    }

}

  • 写回答

2条回答 默认 最新

  • orange4reg 2021-08-04 12:47
    关注

    int k;
    for(k=0;k<10;k++)
    {
    printf("%d",L->data);
    L=L->next;

    }
    

    L这里已经是链表尾了?

    评论

报告相同问题?

问题事件

  • 修改了问题 8月4日
  • 创建了问题 8月4日

悬赏问题

  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES