题目
描述:
题目描述:
输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。
要求实现函数:
void vChanProcess(strNode * pstrIn,strNode * pstrOut);
【输入】 pstrIn:输入一个不带头节点的单向链表
【输出】 pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请)。
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例
输入链表的内容依次为 6,7,8,8,9,10,6
则输出链表的内容依次应该是 10,9,7
练习阶段: 中级
代码
#include <iostream>
#include <map>
#include <vector>
#include "oj.h"
using namespace std;
int iChanProcess(strNode * pstrIn,strNode * pstrOut){
if(pstrIn == NULL || pstrOut == NULL){
return -1;
}
map<int,int> Map;
strNode* p = pstrIn;
while(p){
if(Map.count(p->data) == 0){
Map.insert(map<int,int>::value_type(p->data,1));
}
else{
Map[p->data] = Map[p->data]+1;
}
p = p->pstrNext;
}
p = pstrIn;
vector<int> vec;
while(p){
if(Map[p->data] == 1){
vec.push_back(p->data);
}
p = p->pstrNext;
}
int size = vec.size();
if(size == 0){
return 0;
}
for(int i = 0;i < size-1;++i){
strNode* node = new strNode();
node->data = vec[i];
node->pstrNext = pstrOut->pstrNext;
pstrOut->pstrNext = node;
}
pstrOut->data = vec[size-1];
return 0;
}
void vFreeChan(strNode * pstrChan)
{
strNode* p = pstrChan;
while(p){
strNode* node = p;
p = p->pstrNext;
free(node);
}
return;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
华为机试代码,各种问题,链表合集,二叉树合集,背包问题等 比较难的问题,还有简单的加减乘除等
给你一个链表,节点有值域,计数器(表示值出现的次数,初始化为1),指针域,节点的值有重复的,去除重复的值,修改相应节点的计数器。这样做的好处就是节省的很多存储空间。 对即将参加华为机考的同学有非常大的帮助...
华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++).html付费专栏内容,免费下载,多种语言解法
华为的历年题目和复习参考代码,有链表,排序,字符串等
私信博主免费获取真题解析以及代码
使用单向链表对字符串进行排序,并以从小到大的顺序显示出来。
在华为OD机试真题中,应聘者需要解决一系列的算法和数据结构问题,例如字符串处理、数组操作、链表操作、树操作、图操作等等。此外,应聘者还需要熟练掌握编程语言,例如C++、Java、Python等等,能够熟练地使用各种...
里面是华为机试题目,给想去华为的人分享下。大约十分三类题目:链表题字符串题数据排序题。
头插法是一种常用的链表插入方法,它可以在链表的头部插入新的节点。下面是头插法的步骤: 1. 创建一个新节点,并将要插入的数据赋值给新节点的数据域。 2. 将新节点的指针域指向原链表的头节点。 3. 将新节点设置为...
从两数之和到无重复字符的最长子串以及链表问题是数据结构中的难点,每一题都配有详细的解题思路和代码实现。无论你是编程新手还是老司机,这篇文章都将是你的技术提升秘籍。立刻阅读,让你在面试中以技术实力征服...
接入控制链表 ACL接入控制链表 ACL
用java语言总结了华为机考100道题,包括递归,堆栈,队列,回溯,数组,字符串,链表,动态规划,DFS算法等,帮助您们顺利通过华为机考。
google百度北电华为腾讯试题及面试 中兴面试题 1>某人在某个市场某个商家买了某台电脑,请用你熟悉的计算机语言表达出里面的关系. 其中有商家类,买家类,商品类。还要有买方法,卖方法。 2>一个完整的单例模式 3...
软件编程规范培训实例与练习 软件编程规范培训实例与练习 问题分类 1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能...
1.1.1 如何实现一个高效的单向链表逆序输出? 1.1.2 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 1.1.3 给定一个二叉搜索树(BST),找到树中第 K 小的节点 1.1.4 LRU缓存机制 1.1.5 关于...
19、寻找链表的中间节点 20、最小的调整次数 21、字符串解密 22、投篮大赛 23、任务总执行时长 24、找数字 25、整理扑克牌 26、箱子之形摆放 27、异常的打卡记录 28、最左侧冗余覆盖子串 29、最多提取子串数目 30、...
华为在线笔试(OD)算法题解 华为在线笔试(OD)算法题解是为准备华为技术面试的应聘者提供的一套综合性资源。这些题目模拟了真实场景中的算法和数据结构问题,旨在评估应聘者的编程能力、逻辑思维能力以及解决实际...
1、一个学生的信息是:姓名,学号,性别,...在些链表中删除学生年龄等于age的学生信息。 2、实现一个函数,把一个字符串中的字符从小写转为大写。 里面有我自己从华为面试题里的汇总,有简答题和改错题,编程题等等.
13.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中? 答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理 堆: 程序运行时动态申请,new 和 malloc申请的内存就在堆上 14....
华为 leetcode mistake-collection This is mistake collection for exercise publoms begin at Feb. 18, 2020 Source1:Huawei -> -- Do not use it for its inaccurate. Source2:LeetCode -> Problems: code_1.org ...