两个单链表的合并(C语言实现)
来源:互联网 发布:java bp神经网络 编辑:程序博客网 时间:2024/06/02 04:10
单链表的合并还是挺简单的,直接上代码吧。
#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 链表读取 */void Print( List L ); /*链表输出;空链表将输出NULL */List Merge( List L1, List L2 ); /*链表合并*/int main(){ List L1, L2, L; L1 = Read(); //读取链表1 L2 = Read(); //读取链表2 L = Merge(L1, L2); Print(L); Print(L1); Print(L2); return 0;}List Merge( List L1, List L2 ){ List L, p1, p2, r ; p1 = L1->Next; p2 = L2->Next; L = (List)malloc(sizeof(struct Node)); L->Next = NULL; r = L; while (p1 && p2){ if(p1->Data < p2->Data){ r->Next = p1; r = p1; p1 = p1->Next; } else{ r->Next = p2; r = p2; p2 = p2->Next; } } if(p1) r->Next = p1; else r->Next = p2; L1->Next = NULL; L2->Next = NULL; return L;}List Read(){ int n, i; List L, p, s; scanf("%d",&n); L = (List)malloc(sizeof(struct Node)); L->Next = NULL; p = L; for(i = 0;i < n; ++i){ s = (List)malloc(sizeof(struct Node)); scanf("%d",&s->Data); s->Next = p->Next; p->Next = s; p = s; } return L;}void Print(List L){ List p; p = L->Next; if (L->Next==NULL) { printf("NULL"); } while(p) { printf("%d ", p->Data); p = p->Next; } printf("\n");}
阅读全文
0 0
- 两个单链表的合并(C语言实现)
- 【C语言】两个有序单链表的合并
- PAT 2-11 两个有序链表序列的合并(C语言实现)
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- C语言实现:合并两个有序的数组,合并后的数组依然有序
- C语言 两个矩形的合并
- 将两个递增的有序链表合并为一个递增的有序链表(C语言编程实现)
- C语言实现合并两个有序(从小到大)顺序表为一个顺序表
- 合并排序(归并排序)的C语言实现
- 合并排序的c语言实现
- c语言,用顺序表的原理合并两个集合
- Java语言实现两个有序链表的合并
- c语言将字符串中连续出现的空格(两个以上)合并成一个
- 将两个非递减的有序链表合并为一个非递增的有序链表(C语言编程实现)
- C语言实现链表的创建、计算链表长度及两个链表的合并
- 【C语言】合并,排序两个链表
- 结合两个循环单链表的C语言实现
- c语言实现两个数的平均值
- jQuery基础总结(四)
- 算法五之快速排序
- 算法六之直接插入排序
- Oracle入门(一)之登陆操作数据库
- Oracle入门(二)之SQL
- 两个单链表的合并(C语言实现)
- 数据结构(一)之链表
- 数据结构(二)之链表反转
- 数据结构(三)之单链表反向查找
- 数据结构(四)之单链表查找中间结点
- Linux入门(一)之权限指令系统管理
- Netty网络聊天室之优雅的JavaFX界面开发
- 算法七之希尔排序
- 算法八之归并排序