struct node{ int value; struct node * next; }; typedef struct node Node; void show(const Node * li){ if(NULL == li)puts("node is NULL....."); Node *temp = (Node *)li; while(temp){//注意字符串和一般结构体的区别在这里如果是字符串可以写成while(*temp),但其他类型不行 printf("%d ",temp->value); temp = temp->next; } } /** * 翻转链表 */ Node * upturn(Node * li){ if(NULL == li) return NULL; Node *temp = li; Node *cur = temp;//表示当前元素 Node *next =NULL; temp = temp->next; while(temp){ next = temp->next; temp->next = cur; cur = temp; temp = next; } li->next = NULL; return cur; } Node * meger1(Node *list1,Node *list2){ Node *t1 = list1,*t2 = list2,*t3 = (Node *)malloc(sizeof(Node)) ,*temp = NULL,*t4 = NULL; while(t1 && t2){ if(t1->value > t2->value){ t4 = t1->next; t3->next = t1; t1 = t4; }else{ t4 = t2->next; t3->next = t2; t2 = t4; } if(NULL == temp)temp = t3->next; t3 = t3->next; } show(temp); if(NULL == t1){ t3 = t2; }else{ t3 = t1; } return temp; } void main(){ Node *l = NULL,*t = NULL,*li = NULL,*li2 = NULL; int i= 10; l = (Node *)malloc(sizeof(Node)); l->value = 10; l->next = NULL; li = l; while(i-- > 0){ t = (Node *)malloc(sizeof(Node)); t->value = i; t->next = NULL; l->next = t; l = t; } int j= 16; l = (Node *)malloc(sizeof(Node)); l->value = 29; l->next = NULL; li2 = l; while(j-- > 0){ t = (Node *)malloc(sizeof(Node)); t->value = j; t->next = NULL; l->next = t; l = t; } show(li); puts("-----------"); show(li2); li = meger1(li,li2); //li = upturn(li); puts("-----------"); show(li); }