C 合并列表节点

C 合并列表节点,c,linked-list,nodes,C,Linked List,Nodes,如果给我们一个链表,那么我们必须进行操作,使偶数索引节点排列在一起,奇数索引节点排列在偶数索引节点之后 应输出以下链表1-->2-->3-->4-->5-->6: 2-->4-->6-->1-->3-->5 假设这是您的列表: typedef struct node { int val; struct node * next; } node_t; 首先,您需要为列表的标题指定一个指针,如下所示: node_t * head = NULL; he

如果给我们一个链表,那么我们必须进行操作,使偶数索引节点排列在一起,奇数索引节点排列在偶数索引节点之后

应输出以下链表
1-->2-->3-->4-->5-->6

 2-->4-->6-->1-->3-->5

假设这是您的列表:

typedef struct node {
    int val;
    struct node * next;
} node_t;
首先,您需要为列表的
标题指定一个
指针,如下所示:

node_t * head = NULL;
head = malloc(sizeof(node_t));
然后对
循环使用

    for(int i = 0; i<size_of_your_list; i= i+2){
             if(i % 2 == 0){
              printf("%d",head->val);
            }
            head = head->next;
    }
   for(int i =1 ; i<size_of_your_list; i=i+2){
            if(i % 2 == 1){
              printf("%d",head->val);
            }
            head = head->next;
    }
for(int i=0;ival);
}
头部=头部->下一步;
}
对于(int i=1;ival);
}
头部=头部->下一步;
}

请注意,此代码仅打印。它不会更改您的列表。

您正在查找代码吗?你能解释一下你所付出的努力吗?最简单的方法是将所有偶数编号的节点移到前面。您应该能够通过基本的链表操作来实现这一点。如果
printf(“%d”,head->val)不工作尝试:
printf(“%p”,head->val)i=0
,第二个
i=1
e.t.c。但我们通常必须修改列表,根据我们的逻辑,它将首先打印第一个节点,但我们必须首先显示第二个节点
node_t *cursor = input_list;
while(cursor) {
    if(cursor->value % 2 == 0)
        append(output_list, cursor->value)
    cursor = cursor->next;
}

cursor = input_list;
while(cursor) {
    if(cursor->value % 2 == 1)
        append(output_list, cursor->value)
    cursor = cursor->next;
}