题目:已知存在两个非递减的有序链表List1和List2,现在需要你将两个链表合并成一个有序的非递增序列链表List3,请用C++编码实现。(所有链表均为单链表结构)

思路:此处链表是否都有表头并没有规定。

1:将链表List1和List2合并成一个非递减有序链表List3;

2:再将链表List3进行逆序,即可。

#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct LNode
{
 ElemType data;
 struct LNode *next;
}LinkList;
//采用尾插法创建表
void CreateListR(LinkList *&L,ElemType a[],int n)
{
 LinkList *s,*r;//将数组中的数值存在结点s,再插入到链表L中
 int i;
 L=(LinkList *)malloc(sizeof(LinkList));//链表L头结点
 r=L;//起初指向链表头结点
 for(i=0;i<n;i++)
 {
  s=(LinkList *)malloc(sizeof(LinkList));
  s->data=a[i];
  r->next=s;
  r=s;
 }
 r->next=NULL;//结束标识
}

LinkList *Merge(LinkList *&L1,LinkList *&L2)
{
 if(L2==NULL)
  return L1;
 if(L1==NULL)
  return L2;
 LinkList *L3;
 //L3=(LinkList *)malloc(sizeof(LinkList));
 if(L1->data<=L2->data)
 {
  L3=L1;
  L3->next=Merge(L1->next,L2);
 }
 else
 {
  L3=L2;
  L3->next=Merge(L1,L2->next);
 }
 return L3;
}

LinkList *ListReverse(LinkList *&L)
{
 LinkList *s,*q,*p;
 //s指向逆序后的链表中的当前元素,q指向待逆序链表的当前元素,p指向待逆序链表中当前结点的下一个结点
 if(L==NULL||L->next==NULL)
  return L;
 else
 {
  //s=L;//以链表无头结点的逆序
  s=L->next;//s指向链表头结点的下一个结点
  p=s->next;
  s->next=NULL;
  while(p)
  {
   q=p->next;
   p->next=s;
   s=p;
   p=q;
  }
  //L=s;//p为NULL,s指向逆序元素的当前元素,即链表的第一个元素(若链表无表头,则注释掉这句)
        L->next=s;//若有,链表头结点下一个指向s
 }
 return L;
}
void DispList(LinkList *&L)
{
 LinkList *p=L->next;
 while(p)
 {
  cout<<p->data<<" ";
  p=p->next;
 }
 cout<<endl;
}
int main()
{
 ElemType a1[3]={1,2,3};
 ElemType a2[3]={2,3,4};
 LinkList *L1,*L2;
 int n=3;
 CreateListR(L1,a1,n);
    CreateListR(L2,a2,n);
 DispList(L1);
 DispList(L2);
    LinkList *L3;
 //L3=(LinkList *)malloc(sizeof(LinkList));
 L1=L1->next;//除去头结点
 //L2=L2->next;//除去头结点
    L3=Merge(L1,L2);//以链表1的头结点开始
 DispList(L3);
 L3=ListReverse(L3);
 DispList(L3);
 system("pause");
 return 0;
}

编程菜鸟的日记-初学尝试编程-易传媒笔试题(C++实现)的更多相关文章

  1. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习9

    #include <iostream> #include <fstream> #include <cstdlib> #include <string> ...

  2. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习8

    #include <iostream> #include <fstream> #include <cstdlib> const int SIZE=20; using ...

  3. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习7

    #include <iostream> #include <string> #include <cctype> using namespace std; int m ...

  4. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习6

    #include <iostream> #include <string> using namespace std; const int MSIZE=100; struct j ...

  5. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习5

    #include <iostream> using namespace std; const double N1=35000; const int N2=15000; const int ...

  6. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习4

    #include <iostream> using namespace std; const int strsize=30; const int BOPSIZE=5; void showm ...

  7. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习3

    #include <iostream> using namespace std; void showmenu(void) { cout<<"Please enter ...

  8. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习2

    #include <iostream> #include <cctype> using namespace std; const int MAXSIZE=10; int mai ...

  9. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习1

    #include <iostream>#include <cctype>using namespace std;int main(){ char ch; while((ch=c ...

随机推荐

  1. jQuery常见案例

    jQuery常见案例 通过jQuery实现全选,反选取消: 选择 地址 端口 1.1.1.1 80 1.1.1.1 80 1.1.1.1 80 1.1.1.1 80 代码实现 <body> ...

  2. IDEA 小白采坑

    IDEA Debug状态下,断点第一次可以进去,之后都不能进去 调试时候不要用Ctrl+F9,如果是点击Tool Windows 上的图标的话,也要注意改图标的快捷键是不是Ctrl+F9 Ctrl+F ...

  3. 标准C语言实现基于TCP/IP协议的文件传输

    TCP/IP编程实现远程文件传输在LUNIX中一般都采用套接字(socket)系统调用. 采用客户/服务器模式,其程序编写步骤如下:  1.Socket系统调用  为了进行网络I/O,服务器和客户机两 ...

  4. noip宝藏

    题解: 我觉得状压比搜索不知道简单到哪里去了.. 为了练习搜索...想了一下这题的搜索.. 然后会发现想想就很容易想到dp.. 最后的搜索大概是这样的 我们会发现有一类搜索都是这样 你会重复(可能是指 ...

  5. Openstack1 云计算与虚拟化概念

    一.云概念 二.虚拟化,云计算不等于虚拟化,但是云计算需要用到虚拟化的技术 1.服务器虚拟化 2.桌面虚拟化 3.应用虚拟化 三.区别 1.虚拟化是具体的技术. 2.云计算是交付使用的一种模式

  6. NOI2018Day1T1 归程 并查集 kruskal kruskal重构树 倍增表 Dijkstra

    原文链接https://www.cnblogs.com/zhouzhendong/p/NOI2018Day1T1.html 题目传送门 - 洛谷P4768 题意 给定一个无向连通图,有 $n$ 个点 ...

  7. BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树

    原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ...

  8. day66 模板小结 [母板继承,块,组件]

    小结: day65 1. 老师编辑功能写完 1. magic2函数 --> 用两层for循环解决 全栈8期之殇 问题 2. 模板语言 in 语法 {% if xx in xx_list %} { ...

  9. mysql的基础增删改查(一)

    修改,操作表:1.建表:create table MyClass(id int(4) not null primary key auto_increment,name char(20) not nul ...

  10. Zookeeper三个监听案例

    一.监听某一节点内容 /** * @author: PrincessHug * @date: 2019/2/25, 14:28 * @Blog: https://www.cnblogs.com/Hel ...