数据结构两个有序链表合并为一个有序链表

函数部分如下:
node* combine(node* a,node* b)
{
node *p=a,*q=b,*pre,*head;
if(p->info>=q->info)
head=p;
else
head=q;
pre=head;
while( p!=NULL && q!=NULL )
{
if(p->info >= q->info)
{
pre->next=p;
pre=p;
p=p->next;
}
else
{
pre->next=q;
pre=q;
q=q->next;
}
}
while(p!=NULL)
{
pre->next=p;
pre=p;
p=p->next;
}
while(q!=NULL)
{
pre->next=q;
pre=q;
q=q->next;
}
return head;
}
可是什么也不显示,运行结果如下图片说明,上面的是其他功能的函数

0

2个回答

楼主可以参考下面我写的将两个链表连接的函数

 /****实现将两个带头节点的单向链表a,b连接****/
void LinkTwoNode(SeqList *a,SeqList *b)
    {
      SeqList *mPtr = NULL;
      for (mPtr = a;mPtr->next != NULL;mPtr = mPtr->next);
      ;
      mPtr->next = b->next;
      free(b);
      b = NULL;
    }
1
currycool
currycool 可还是不行啊
2 年多之前 回复

其他函数补图图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
实现两个有序的链表合并为一个有序链表
实现两个有序的链表合并为一个有序链表 class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def mergeTwoLists(self, l1, l2): """ :type l1: ListNo...
将两个有序链表合并为一个有序链表
头文件(“链表.h”) #pragma once #include<stdio.h> #include<stdlib.h> #include<Windows.h> typedef struct ListNode{     struct ListNode *next;     int data; }ListNode; //初始化 void Init(Lis...
两个有序链表合并为一个新的有序链表
/*合并到新链表*/ #include<iostream> #include<cmath> #include<algorithm> using namespace std; struct node { int v; struct node*pnext; }; void input(struct node*phead); void merge(s...
数据结构 P31 算法实现 有序链表合并为有序链表
/*有序链表的合并 —算法2.12*/ #include using namespace std; struct node          //创建节点 { int date; node *next; }; class list          //创建链表类 { public: node *head,*s,*p; public:   list(){hea
如何将两个有序链表合并成一个有序链表。
有两个带头节点的有序链表,如何把他们合成一个有序链表?(假设链表带头节点) 我们通过取出其中一条链表的头节点作为合成后的有序链表的头节点(当然,这里也可以自己重新生成一个节点来作为头节点,但是使用原先的可以节省开销)。 取出后,这既是新链表的head,也是它的tail,因为新链表现在只有这么一个节点,我们用tail标记一下它。 接下去,我们去比较两条链表的数值,取较小值的节点追加到新的链表的
将两个有序链表合并成一个有序链表
题目:给定两个有序的链表,编写一个函数来合并这两个链表,并且返回一个新的有序的链表 分析:这两个链表已经有序,所以,只需要对着两个链表的元素依次进行比较即可,这是对两个链表操作的基本问题。 参考答案:(非常简单) #include "stdafx.h" #include using namespace std; struct ListNode { int val; ListN
两个有序链表合并为有序
#include             //两个有序递增的单链表(有头结点),合并为新单链表。 #include             //【用尾插法表示这两个链表较好,因为这样创建链表是有序的,递增的。                                 //如果用头插法,for循环改为for(i=n;i>=0,i++),使其新建的链表递增】 typedef struct
两个有序链表合并成一个有序链表
为神马面试的时候撕不出来??!!!o(╥﹏╥)o 思路:取两个链表的第一个数比较,小的那个添加到新链表,然后指针向后移动,第二个数再与另一个链表的第一个数比较,以此类推。。。就是那个链表中的数被添加到新链表中,那个链表的指针就向后移动 /*数据结构 { value:1, next:{...} } */ //合并函数 function merge(p1,p2){ let ne...
数据结构笔记—两个有序链表合并成一个有序链表(Swift)
数据结构笔记系列 数据结构笔记--线性表定义与实现(Swift) 实现要求 两个升序的单链表,合并成一个升序的单链表 思路分析   在网上看了很多其他语言实现的这个题目,不是太懂(主要是不太懂其他语言的语法),总体而言就是把一个链表按照一定的规则插入到另一个链表中。现在用Swift实现一遍。 步骤  主要目的是找到一个插入位置 从链表的第一个结点开始,把插入的值和当前的结点做比较 如果插入的...
将两个递增的有序链表合并为一个递增的有序链表
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。 void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) { //合并链表La和Lb,合并后的新表使用头指针Lc指向 pa=La->next; pb=Lb->next; //pa和p
将两个递增的有序链表合并为一个递增的有序链表。
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表 #include "stdio.h" #include<stdlib.h> typedef struct node{ int data; struct node* next; }listnode; typedef listnode* linklist;/* ´øÍ·µ¥Á´±íµÄÍ·Îļþ */ link...
把两个有序链表合并为一个有序链表(注意空指针异常!)
public static Node Merge(Node list1,Node list2) {         if(list1==null)return list2;         if(list2==null)return list1;         Node pre1=null;                 Node nhead=new Node(-1);      
(java)将两个有序链表合并为一个有序链表
java中将两个有序链表合并为一个有序链表: 1.必须保证两个链表为有序链表 2.在两个链表都不为空的条件下,设一个 last=null; (1)如果链表1的值小于等于链表2的值,进行循环,先放链表1的值到新链表result,如果result为空,视为头插,如果不为空,视为尾插,其中要保证last永远为最后一个结点,最后让循环走起来 (2)如果链表2的值小于链表1的值,与(1)中方法相同,...
java将两个有序链表合并成有序链表
利用递归法将两有序链表合并成链表,且合并后的链表仍然有序。 比较链表1和链表2的第一个结点数据,如果head1.data<head2.data,则把结果链表头指向链表1的第一个结点。 对剩余的head1.next和链表2再次递归调用同样的方法,合并结果。 一直递归到所有结点都被加到结果链表中。 class Node{ Node next=null; int data; public...
将两个有序链表合并为一个
template <class T> struct ListNode{ T data; struct ListNode *next; }非递归方法:Struct ListNode *(ListNode*head1,ListNode *head2) { struct ListNode *head=new ListNode; struct ListNode *p1=head1;...
两个有序链表合并——非递归实现
#include <iostream> using namespace std; #include <stdlib.h> /* malloc, calloc, realloc, free */ struct ListNode{ int value; ListNode* pNext; }; ListNode* MergeList(ListNode* list1,...
两个有序链表合并
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) re...
两个有序的链表合并成一个有序链表的最优方法
两个有序的链表合并成一个有序链表的最优方法。例如链表a四个元素1,3,5,7,链表b四个元素2,4,6,8.合并为链表c。谢谢指点
java两个有序链表合并
                                       java两个有序链表合并  今天做了个算法题,遇到了点问题。和大家分享一下 要求是实现两个链表的合并。这个链表可以自己用类实现,也可以用LinkedList。为了方便访问,我用了后者实现。 看一下代码: package MM; import java.util.LinkedList; public clas...
数据结构与算法——有序链表合并
要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 #include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct Node *PtrToNode; struct Node { ElementType Data; PtrToNode ...
两个有序的链表合并
typedef struct Node{         int data;         struct Node* next; }Node, *PLinkList; Node* MergeList(PLinkList p1, PLinkList p2) {         PLinkList newhead = NULL;         PLinkList end = newhead;  ...
Leetcode——两个有序的链表合并
两个有序的链表合并 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路: 我们需要自己设定两个链表,分别比较两个链表所指的向元素值得大小,小的元素添加到新的链表当中去。记得还要判断设定的两个链表cur1,cur...
数据结构——将两个有序链表合并为一个新的有序链表并返回。(基于Java语言实现)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思想: 从两个有序链表的第一个结点开始比较,val值小的结点尾插入结果链表。 具体实现: 定义变量 (1)定义变量 cur1,cur2 分别表示两个链表; (2...
【数据结构---6】将两个有序链表合并为一个新的有序链表并返回
题目描述: 将两个有序链表合并为一个新的有序链表并返回,新链表是通过拼接给定的两个链表的所有节点组成的 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 /** * Definition for singly-linked list. * struct ListNode { * int val...
Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
有序链表合并题目:已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。结果链表要包含head1和head2的所有节点,即使节点值相同。 分析:此题目使用链表结构,目的是为了让答题者不增加额外的存储空间来实现,所以不能把值全拿出来排序再放回链表。而由于链表本身有序,所以可以分别比较两个链表对应的值,较小者取之,其所在的链表往后推一位(升序排),直至某链表遍历完成,将另一链表
两个无序链表合并成一个有序链表
输入链表A 与B(空格分隔),说输入的数字序列可以无序 最后合并成一个有序的列表!MFC可视化编程
Java实现两个有序的链表合并
Java实现两个有序的链表合并 先实现两个有序链表 代码如下: SingleLinkedList sll1 = new SingleLinkedList(); for (int i = 0; i < 10; i += 2) { SingleNode node = new SingleNode(i, null); ...
数据结构——有序链表合并(C语言版)
有序链表合并 两个有序的链表,要求将其合并为一个链表,并且该链表保持有序!! 这里所讲的是链表升序! 首先,我们要构造两张按照升序排列好的链表。 构造链表:我们的方法有尾插,头插,大家可以click链接来查看: https://blog.csdn.net/code_zx/article/details/80024207 这里我们的实验数据,以及思路如图所示!! 实验数据: 链表1:...
将两个有序链表合并一个链表
将两个有序的链表合并为一个有序链表,链表的大小是可变的
将两个有序链表合并成一个链表
代码实现功能如下:将两个有序链表合并成一个有序链表。 具体思路如下:首先自己调用链表的创建函数,手动创建两个有序链表,链表的创建以输入0作为截止标志。创建好两个有序链表之后,将两个链表的头结点进行比较,小的那个作为合并后的链表的头结点,同时,创建两个指针分别指向两个链表的的头结点或头结点的下一个节点,当两个链表进行比较的元素都不为空的话,依次从下到大连接,若有一个链表中比较的节点开始为空时,则将...
有序链表合并
有序链表合并: LA、LB是两个带头结点的有序链表,归并两个链表得到新的有序表LC。设立指针pa,pb,pc,其中pa和pb分别指向LA,LB中当前待比较的结点,pc指向LC表中当前最后一个结点。将pa,pb结点中值较小的一个链接到pc之后。typedef struct Node { int data; struct Node* next; }Node,*PLink;//销
数据结构 两个链表合并-python
#!/usr/bin/env python3 # -*- coding: utf-8 -*-' a test module '__author__ = 'Zhang Shuai' class Node(): def __init__(self, d, p): self.next = p self.data = d a = Node(1, Node(5, Nod
数据结构--ArrayList07 合并两个有序顺序表为一个有序顺序表
1)题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表 2)思路:listA,listB合并成listAB;len(listAB)=len(listA)+len(listB);同时从头到尾依次遍历listA和listB,假如listA[i]<listB[j],将listA[i]加入listAB中,i=i+1,j=j;假如listA[i]>listB[j],将lis...
并两个有序链表-链表合并常用解法
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 /** * 合并两个有序链表 * 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * 示例: * ...
写链表逆序,两个链表合并成有序链表
struct Node{ int data; Node *next; }; typedef struct Node Node; Node *Reverse(Node *head){ if(head==NULL||head->next==NULL) { return head;} Node *p1=head; Node *p2=p1->next; Node *p3=p2->...
把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表
实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。这道题可以分成两个思路: 1.先把两个链表合并成一个链表,合并后的链表从大到小排序 2.将链表逆置,得到从小到达排序的链表链表合并最粗暴的方法,遍历第一个链表的节点,和第二个链表的每一个节点比较,找出最小者作为链表的新节点插入,这个方法的时间复杂度为O(len1*len2)。由于两个链表是有序的,因此我们可以
【面试题17】将两个有序的链表合并
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}//成员中有指针,一定要重载构造函数 ListNode(){}//保留默认构造函数 }; //创建一个链表结点 ListNode* CreateListNode(int value) { ListNode
两个有序链表合并插入删除修改
两个有序链表合并 链表插入 删除 修改等
剑指offer14--将两个有序链表合并
将两个有序链表进行排序
七、两个有序链表合并(递归方式)
/** * 合并两个有序链表,合并后依旧有序,当链表1是空链表时,合并结果就是链表2,但链表2是空链表时, * 合并结果是链表1;如果两都是空链表,合并结果就是空链表; * 比较两个链表的头结点,小的作为合并后的头结点,在剩余节点中,再次比较两个链表的头结点(采用递归)。 */ struct list_head *merge_two_list(struct list_head *list...