编程菜鸟的日记-初学尝试编程-易传媒笔试题(C++实现)
题目:已知存在两个非递减的有序链表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++实现)的更多相关文章
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习9
#include <iostream> #include <fstream> #include <cstdlib> #include <string> ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习8
#include <iostream> #include <fstream> #include <cstdlib> const int SIZE=20; using ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习7
#include <iostream> #include <string> #include <cctype> using namespace std; int m ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习6
#include <iostream> #include <string> using namespace std; const int MSIZE=100; struct j ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习5
#include <iostream> using namespace std; const double N1=35000; const int N2=15000; const int ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习4
#include <iostream> using namespace std; const int strsize=30; const int BOPSIZE=5; void showm ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习3
#include <iostream> using namespace std; void showmenu(void) { cout<<"Please enter ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习2
#include <iostream> #include <cctype> using namespace std; const int MAXSIZE=10; int mai ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习1
#include <iostream>#include <cctype>using namespace std;int main(){ char ch; while((ch=c ...
随机推荐
- DNS解析中的A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发等
AA记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录 NSNS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 SOASO ...
- 阿里 Goldeneye 四个环节落地智能监控:预测、检测、报警及定位
阿里 Goldeneye 四个环节落地智能监控:预测.检测.报警及定位 https://www.infoq.cn/article/alibaba-goldeneye-four-links
- centos6.x完全禁用IPv6的方法
https://blog.csdn.net/prettyshuang/article/details/51731890
- BootStrap标题制作模板
<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="UTF-8&q ...
- python sqlite3查看数据库所有表(table)
#coding:utf-8 import sqlite3 ''' sqlite3存在系统表sqlite_master,结构如下: sqlite_master( type TEXT, #类型: ...
- 【转】利用 selenium 的 webdrive 驱动 headless chrome
1.参考 使用 headless chrome进行测试 2.概念 Headless模式解决了什么问题: 自动化工具例如 selenium 利用有头浏览器进行测试,面临效率和稳定性的影响,所以出现了 H ...
- ANGULAR6.x - 错误随笔 - Can't bind to 'formGroup'
formGroup:错误 Can't bind to 'formGroup' since it isn't a known property of 'form'. (" 原因: 在使用for ...
- NEST - Elasticsearch 的高级客户端
NEST - High level client Version:5.x 英文原文地址:NEST - High level client 个人建议:学习 NEST 的官方文档时,按照顺序进行,不宜跳来 ...
- jQuery插件学习之选项卡Tab
在网站开发中经常会用到选项卡功能,为了节省一下写代码时间,封装了一下tab插件,方便调用. 来看一下效果: tab-1 tab-2 tab-3 tabs-1-panel tabs-2-panel ta ...
- Flink--输入数据集Data Sources
flink在批处理中常见的source flink在批处理中常见的source主要有两大类. 1.基于本地集合的source(Collection-based-source) 2.基于文件的sourc ...