c 链表拼接_c

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
int data;
struct ListNode *next;
};

struct ListNode *createlist(); /*裁判实现,细节不表*/
struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);
void printlist( struct ListNode *head )
{
struct ListNode *p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}

int main()
{
struct ListNode *list1, *list2;

list1 = createlist();
list2 = createlist();
list1 = mergelists(list1, list2);
printlist(list1);

return 0;
}

/* 你的代码将被嵌在这里 */

c 链表拼接_c++_02

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
{
struct ListNode *p;
//将list1 list2 存入数组
p=list1;
int temp[100];
int cnt=0;
while(p){
temp[cnt]=p->data;
cnt++;
p=p->next;
}
p=list2;
while(p){
temp[cnt]=p->data;
cnt++;
p=p->next;
}
int i,j,t;
//冒泡排序 ,从小到大
for(i=0;i<cnt;i++){
for(j=0;j<cnt-1;j++){
if(temp[j]>temp[j+1]){
t=temp[j];
temp[j]=temp[j+1];
temp[j+1]=t;
}
}
}
//在将数组存进链表(此处用尾插法)
struct ListNode *head,*tail,*q;
head=tail=NULL;
for(i=0;i<cnt;i++){
q=(struct ListNode *)malloc(sizeof(struct ListNode));
q->data=temp[i];
if(head==NULL&&tail==NULL){
head=tail=q;
}
tail->next=q;
tail=q;
}
return head;
}