【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集
42.请修改 append 函数,利用这个函数实现(链表):
两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5
另外只能输出结果,不能修改两个链表的数据。
感觉网上理解题意略有不同,我理解的题意:
只是输出最后的结果,不用生成一个新的链表,也不修改原有链表。
给的数据非降序就是 1 1 2 2 3 这样可以有重复数字的递增
输出时,不显示重复的数字。
基于这些理解,题目不难,代码如下:
/*
42.请修改 append 函数,利用这个函数实现(链表):
两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5
另外只能输出结果,不能修改两个链表的数据。
start time = 19:29
end time = 19:57
*/ #include <iostream>
using namespace std; typedef struct List
{
int m_value;
List * p_next;
}List; void append(List * L1, List * L2)
{
List * p1 = L1;
List * p2 = L2;
//两个链表都没走空
while(p1 != NULL && p2 != NULL)
{
int v;
if(p1->m_value > p2->m_value)
{
v = p2->m_value;
cout << p2->m_value;
while(p2 != NULL && p2->m_value == v)
p2 = p2->p_next;
}
else if(p1->m_value < p2->m_value)
{
v = p1->m_value;
cout << p1->m_value;
while(p1 != NULL && p1->m_value == v)
p1 = p1->p_next;
}
else
{
v = p1->m_value;
cout << p1->m_value<<" ";
while(p1 != NULL && p1->m_value == v)
p1 = p1->p_next;
while(p2 != NULL && p2->m_value == v)
p2 = p2->p_next;
} if(p1 == NULL && p2 == NULL)
cout<<endl;
else
cout<<"->";
}
//若p1未走空
while(p1 != NULL)
{
int v = p1->m_value;
cout << p1->m_value;
while(p1 != NULL && p1->m_value == v)
p1 = p1->p_next;
if(p1 == NULL)
cout<<endl;
else
cout<<"->";
}
//若p2未走空
while(p2 != NULL)
{
int v = p2->m_value;
cout << p2->m_value;
while(p2 != NULL && p2->m_value == v)
p2 = p2->p_next;
if(p2 == NULL)
cout<<endl;
else
cout<<"->";
}
} void createList(List * &Head)
{
int data;
cin >> data;
if(data != )
{
Head = new List;
Head->m_value = data;
Head->p_next = NULL;
createList(Head->p_next);
}
}
int main()
{
List * L1 = NULL;
List * L2 = NULL;
createList(L1);
createList(L2);
append(L1, L2); return ;
}
【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集的更多相关文章
- java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序
package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; publi ...
- PTA基础编程题目集6-7 统计某类完全平方数 (函数题)
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中 ...
- PTA基础编程题目集6-2多项式求值(函数题)
本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑i=0n(a[i]×xi) 在x点的值. 函数接口定义: double f( int n, dou ...
- php实现 提取不重复的整数(编程题目能够最快的熟悉函数)
php实现 提取不重复的整数(编程题目能够最快的熟悉函数) 一.总结 一句话总结:编程题目能够最快的熟悉函数. 1.字符串反转函数? 没有str_revserse,有arr_reverse,这里是st ...
- PTA基础编程题目集6-6求单链表结点的阶乘和(函数题)
本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( List L ); 其中单链表List的定义 ...
- UNIX网络编程——利用recv和readn函数实现readline函数
在前面的文章中,我们为了避免粘包问题,实现了一个readn函数读取固定字节的数据.如果应用层协议的各字段长度固定,用readn来读是非常方便的.例如设计一种客户端上传文件的协议,规定前12字节表示文件 ...
- 利用钩子函数来捕捉键盘响应的windows应用程序
一:引言: 你也许一直对金山词霸的屏幕抓词的实现原理感到困惑,你也许希望将你的键盘,鼠标的活动适时的记录下来,甚至你想知道木马在windows操作系统是怎样进行木马dll的加载的…..其实这些都是用到 ...
- 前端开发JS白板编程题目若干
在前端开发参加面试的时候,无论是校招还是社招,往往都会碰到让我们直接在白纸或者白板上手撸代码的题目.由于是手撸代码,这些题目肯定不会过于复杂和冗长,否则面试那么一小会时间根本写不完.本文总结了几个我本 ...
- 39 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) public class _039PrintFu ...
随机推荐
- [设计模式] javascript 之 责任链模式
责任链模式:定义 责任链接模式又称职责链模式,是一种对象的行为模式:它是一种链式结构,每个节点都有可能两种操作,要么处理该请求停止该请求操作,要么把请求转发到下一个节点,让下一个节点来处理请求:该模式 ...
- jQuery属性选择器.attr()和.prop()两种方法
在判断表单单选框是否被选中时,通常会想到使用$('#checkbox').attr('checked')来判断,但在一些情况下,你会发现这种方法并不管用,得到的是undefined. 原来jQuery ...
- sqlserver中将某数据库下的所有表字段名称为小写的改为大写
declare @name varchar(50), @newname varchar(50),@colname varchar(50) declare abc cursor for select ( ...
- iOS: 聊聊 Designated Initializer(指定初始化函数)
iOS: 聊聊 Designated Initializer(指定初始化函数) 一.iOS的对象创建和初始化 iOS 中对象创建是分两步完成: 分配内存 初始化对象的成员变量 我们最熟悉的创建NSOb ...
- Sql统计一个字符串在另一个字符串出现的次数的函数-fnQueryCharCountFromString
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ),)) returns int as begin declare @pos int,@n int , ...
- Codeforces Round #336 Hamming Distance Sum
题目: http://codeforces.com/contest/608/problem/B 字符串a和字符串b进行比较,以题目中的第一个样例为例,我刚开始的想法是拿01与00.01.11.11从左 ...
- 开着idea,死机了,关机重启。重启之后,重新打开idea报错java.lang.AssertionError:upexpected content storage modification
开着idea,死机了,关机重启.重启之后,重新打开idea报错java.lang.AssertionError:upexpected content storage modification. goo ...
- 常用聚类算法(一) DBSCAN算法
1.DBSCAN简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度 ...
- eclipse中整合springMvc和velocity
1.项目所需要的jar包(有些可能多余) 2.在src目录下创建一个bean 一个一个controller ,路径如下 person代码: package com.test.bean; import ...
- JS中try....catch
1.事情还有得挽回,换条路走try { 执行某个逻辑} catch (e) { 出问题,换个逻辑执行} 2.体面的退出try { 正常流程} catch (e) { 弹个框告诉用户不好意思出了点问题 ...