合并两个链表

时间:2016-04-11 01:56:37

标签: c data-structures linked-list

我在合并2列表时遇到问题,所以我(想)正在做的是。将列表A分配给当前,转到当前的最后一个节点,将列表B添加到当前,将当前分配给head2,最后打印。但是当我运行它时没有任何结果,head2列表仍然为空

#include<stdio.h>
#include<stdlib.h>
typedef struct node {
int val;
struct node * next;
} node_t;

void print_list(node_t * head);
node_t* merge(node_t *head,node_t *head1);

int main(){
int number;
node_t * head = NULL;
node_t * head1 = NULL;

//inputA
//inputB

printf("merged list is : \n");
print_list(merge(head,head1));
printf("\n");   
return 0;
}

node_t *merge(node_t *head,node_t *head1){
     node_t * current = head;
     while(current->next != NULL){
     current = current->next;
     }
     current->next = head1;
     return current;    
}
void print_list(node_t * head) {
node_t * current = head;

while (current != NULL) {
    printf("%d ", current->val);
    current = current->next;
    }
}

编辑:头部是列表A,头部1是列表B,已经有一些数据。它只会保留A ex的最后一个节点。 A = 1 2 3,B = 4 5 6返回3 4 5 6

1 个答案:

答案 0 :(得分:0)

我看到合并问题:
*如果左头是NULL,则会发生段错误 *它返回了合并点,而不是真正的新常见头。

node_t *merge(node_t *head,node_t *head1){
     if (head == NULL)
         return head1;
     node_t * current = head;
     while(current->next != NULL){
     current = current->next;
     }
     current->next = head1;
     return head;
}