下面是我的code,就是能够合并两个list并排序的。(例如:list1=5 4 3 2; list2=7 3 2 1的话,就会合并成7 5 4 3 3 2 2 1)我编好了合并的那一部分,排列那一部分我问了外网,外网人给了点提示,但是我还是不怎么明白,请问有人能帮我填满下面的空档吗?sortlist的while(finish)部分需要填。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct node {
int data;
struct node* link;
}NODE;
void addNode(NODE** head, int data) {
NODE* p = *head;
NODE* temp = (NODE*)malloc(sizeof(NODE));
temp->data = data;
temp->link = NULL;
if (*head == NULL) {
*head = temp;
return;
}
while (p->link) p = p->link;
p->link = temp;
}
void showList(NODE* head) {
NODE* p = head;
while (p) {
printf("%d%s", p->data, p->link ? "->" : "");
p = p->link;
}
printf("\n");
}
NODE* sortList(NODE* X, NODE* Y) {
int finish = 1;
NODE* headNode;
NODE* base; // 大的数
NODE* challenger; // 小的数
NODE* preNode;
if (X->data > Y->data) {
headNode = X;
base = X->link;
challenger = Y;
preNode = X;
}
else {
headNode = Y;
base = Y->link;
challenger = X;
preNode = Y;
}
while (finish) {
if (challenger->data > base->data) {
}
else {
}
if (base == NULL) {
}
if (challenger == NULL) {
}
}
return headNode;
}
int main() {
NODE* L1 = NULL;
NODE* L2 = NULL;
printf("&head = %p\thead = %p", &L1, L1);
addNode(&L1, 14);
printf("&head = %p\thead = %p", &L1, L1);
addNode(&L1, 10); addNode(&L1, 5); addNode(&L1, 4); addNode(&L1, 1);
addNode(&L2, 15); addNode(&L2, 10); addNode(&L2, 6); addNode(&L2, 3); addNode(&L2, 1);
showList(L1);
showList(L2);
showList(sortList(L1, L2));
}