//两个有序数列的合并
#include<stdio.h>
#include<stdlib.h>
typedef struct No{
int date;
No* next;
} Node;
Node *creat()
{
Node* p=NULL,*head=NULL,*tail=NULL;
int x;
head=(Node*)malloc(sizeof(Node));
head->date=-100;
head->next=NULL;
tail=head;
scanf("%d",&x);
while(x!=-1){
p=(Node*)malloc(sizeof(Node));
p->date=x;
p->next=NULL;
tail->next=p;
tail=p;
scanf("%d",&x);
}
return head;
}
void print(Node *head)
{
Node *p=head->next;
while(p!=NULL){
printf(p->next==NULL?"%d/n":"%d ",p->date);
p=p->next;
}
}
void insert(Node *head,int x)
{
Node *p=head,*q=NULL;
q=(Node*)malloc(sizeof(Node));
q->date=x;
q->next=NULL;
while(p->next!=NULL&&p->next->date<x){/*如果p->next->date<x放前面就不行,
因为访问p->next->date是非法的*/
p=p->next;
}
//printf("p->next=%d x=%d/n",p->next->date,x);这句也是非法的
if(p->next==NULL){
p->next=q;
}
else{
q->next=p->next;
p->next=q;
}
}
Node* sort(Node *head1,Node *head2)
{
Node *p1=head1->next,*p2=head2;
while(p1!=NULL){
insert(p2,p1->date);
p1=p1->next;
}
return p2;
}
main()
{
Node *head1,*head2,*head;
head1=creat();print(head1);
head2=creat();print(head2);
head=sort(head1,head2);
print(head);
return 0;
}
分享到:
相关推荐
本文实例讲述了PHP实现合并两个排序链表的方法。分享给大家供大家参考,具体如下: 问题 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解决思路 简单的合并排序...
## 链表* 实现单链表、循环链表、双向链表,支持增删操作* 实现单链表反转* 实现两个有序的链表合并为一个有序链表* 实现求链表的中间结点 ## 栈* 用数组实现一个顺序栈* 用链表实现一个链式栈* 编程模拟实现一个...
问题:实现两个有序的链表合并为一个有序链表 问题:实现求链表的中间结点 栈 问题:用数组实现一个顺序栈 问题:用链表实现一个链式栈 队列 问题:用数组实现一个顺序队列 问题:用链表实现一个链式队列 ...
递归是一个很直接的方法,想想斐波那契数列 from typing import List ###### leetcode 代码主体 ###### class Solution: def mergeTwoLists(self, l1, l2): if l1 is None: return l2 elif l2 is None: ...
实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 栈 用层叠实现一个顺序栈 用链表实现一个链式栈 编程模拟实现一个浏览器的前进,后退功能 阴离子 用重叠实现一个顺序数值 用链表实现一个链式骨架 实现...
合并两个递增排序的链表 连续子序列的最大和 替换空格 二维数组中的查找 从尾到头打印链表 重建二叉树(用前序和中序构建) 从上到下打印二叉树(层序遍历) 用两个栈实现队列 斐波那契数列 旋转数组的最小数字 矩阵中...
若将两个有序表合并成一个有序表,称为二路归并。时间复杂度O(n log n) 。 (6)堆排序 利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。
合并两个有序链表18.判断二叉树A中是否包含子树B.19.二叉树的镜像20.顺时针打印矩阵、21.包含min函数的栈.22.判断一个栈是否是另一个栈的弹出序列23.层序遍历二叉树。24.后序遍历二叉搜索树。25.二叉树中和为某值的...
17. 合并两个有序链表 18. 判断二叉树A中是否包含子树B 19. 二叉树的镜像 20. 顺时针打印矩阵 21. 包含min函数的栈 22. 判断一个栈是否是另一个栈的弹出序列 23. 层序遍历二叉树 24. 后序遍历二叉搜索树 25. ...
实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 实现:assignment1 【任务2 - 栈、队列与递归】 1、栈 用数组实现一个顺序栈 用链表实现一个链式栈 编程模拟实现一个浏览器的前进、后退功能 2、队列 用...
合并两个有序链表 26 删除排序数组中的重复项 27 移除元素 28 实现strStr 32 最长有效括号 35 搜索插入位置 38 外观数列 41 缺失的第一个正数 53 最大子序列和 58 最后一个单词的长度 63 不同路径 II 66 加一 67 二...
21.合并两个有序链表 13.罗马数字转整数 283.移动零 122.买卖股票的最佳时机 242.有效的字母异位词 202.快乐数 190.颠倒二进制位 268.缺失数字 LeetCodeEasy2 38.外观数列 160.相交链表 371.两整数之和 155.最小栈 ...
Leetcode扑克 剑指offer-Java题解 二维数组中的查找 - [行列递增的二维数组搜索]- leetcode 240 替换空格 从尾到头打印链表 重建二叉树 ...[用前序和中序遍历序列构建...[合并两个有序链表]- leetcode 21 树的子结构 -
6.数据结构中评价算法的两个重要指标是(时间复杂度和空间复杂度) 【北京理工大学 2001 七、1(2分)】 7. 数据结构是研讨数据的_(1)物理结构_和_(2)逻辑结构 _,以及它们之间的相互关系,并对与这种结构定义...
leetcode22题 Leetcode 刷题记录 两数之和 分配糖果问题 最长公共子序列 替换后的最长重复字符 数组中数字出现的次数 旋转数组的最小值II 查找两个有序数组的中位数 相交链表 ...合并两个有序数组 路径总和
合并两个有序数组 142 环形链表 2 76 最小覆盖字串 练习 633 平方数之和 680 验证回文字符串 524 通过删除字母匹配到字典里最长单词 总结:Two Sum、归并两个有序数组、快慢指针、滑动窗口 第 4 章 居合斩!二分...
合并两个有序链表 简单 0026 删除排序数组中的重复项 简单 0027 移除元素 简单 0028 实现 strStr() 简单 下一个排列 中等 在排序数组中查找元素的第一个和最后一个位置 中等 0035 搜索插入位置 简单 0038 外观数列 ...
合并两个有序链表 JavaScript 简单 链表 26 简单 数组、双指针 27 简单 数组、双指针 28 简单 双指针、字符串 35 简单 数组、二分查找 38 外观数列 JavaScript 简单 字符串 中等 # 题名 题解 困难程度 标签分类 2 ...
合并两个有序链表 141: 判断链表中是否有环 206: 反转单链表 876: 求链表中间结点 题目分类 栈 20: 有效的括号 155: 最小栈 232: 用栈实现队列(todo) 844: 比较含退格的字符串 224: 基本计算器 682: 棒球比赛 496: ...
+ [块状链表](#块状链表) + [动态树](#动态树) + [左偏树](#左偏树) + [跳表](#跳表) + [SBT](#sbt) + [线段树](#线段树) + [单调队列](#单调队列) + [哈希表](#哈希表) + [Splay](#splay) * [图论](#图论...