合并两个有序链表
来源:互联网 发布:网络机房存储设备 编辑:程序博客网 时间:2024/06/07 05:42
#include <stdio.h>#include <stdlib.h>struct list{ int data; struct list *next;};typedef struct list L;L *insert (L *head, int data)//尾插{ L *new = calloc(1, sizeof(L)); new->data = data; new->next = NULL; if(head == NULL) head = new; else { L *tmp = head; while(tmp->next != NULL) { tmp = tmp->next; } tmp->next = new; } return head;}L *mergeList(L *head1, L *head2)//合并{ L *merge = NULL; L *node1 = head1; L *node2 = head2; //先找到新链表的头 if(head1 == NULL && head2 == NULL) return merge; else if (head1 == NULL && head2 != NULL) return head2; else if (head2 == NULL && head1 != NULL) return head1; else { if(head1->data >= head2->data) { merge = head2; head2 = head2->next; } else { merge = head1; head1 = head1->next; } } L *tmp = merge; //比较两个链表的首个节点 然后将data较小的节点插入到新链表中 //如果在比较当中某个链表已经遍历完,则直接将另个链表直接插入到新链表中 while(head1 != NULL || head2 != NULL) { if (head1 == NULL && head2 != NULL) { tmp->next = head2; break; } else if(head2 == NULL && head1 != NULL) { tmp->next = head1; break; } else { if (head1->data >= head2->data) { tmp->next = head2; head2 = head2->next; } else { tmp->next = head1; head1 = head1->next; } } tmp = tmp->next; } return merge;}void travel(L *head){ L *node = head; while(node!= NULL) { printf("data:%d\n", node->data); node = node->next; } return;}int main(){ L *head1 = NULL; L *head2 = NULL; L *head3 = NULL; int i = 0; for(i = 0; i < 10; i = i + 2) { head1 = insert(head1, i); } for(i = 1; i < 20; i = i + 2) { head2 = insert(head2, i); } travel(head1); printf("\n"); travel(head2); printf("\n"); head3 = mergeList(head1, head2); travel(head3); return 0;}
输出
data:0data:2data:4data:6data:8data:1data:3data:5data:7data:9data:11data:13data:15data:17data:19data:0data:1data:2data:3data:4data:5data:6data:7data:8data:9data:11data:13data:15data:17data:19
阅读全文
0 0
- 有序的合并两个有序链表
- 两个有序链表合并为有序
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 两个有序链表合并
- 合并两个有序链表
- 两个有序链表合并
- 合并两个有序链表
- 合并两个有序链表
- 两个有序链表合并
- 合并两个有序链表
- 合并两个有序链表
- 解决SendTo拒绝访问
- 为什么eclipse启动tomcat后项目无法访问而通过startup.bat启动后却能访问
- 部署环境抛异常 严重: IOException while loading persisted sessions: java.io.EOFException
- Android 背景透明度设置总结
- 【spark 学习笔记】Spark学习笔记精华(1)
- 合并两个有序链表
- MySql 数据库类型
- Leetcode 18 Course Schedule
- windows上安装Anaconda和python
- caffe学习笔记6:Blob,layer and net以及对应配置文件的编写
- 工作队列(workqueue)
- PHP 文件上传
- linux版本信息查看
- spring mvc 的全局异常捕捉