[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
来源:互联网 发布:mac terminal 清屏 编辑:程序博客网 时间:2024/05/17 06:48
题目
描述: 题目描述:输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut);【输入】 pstrIn:输入一个不带头节点的单向链表【输出】 pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请)。【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例 输入链表的内容依次为 6,7,8,8,9,10,6则输出链表的内容依次应该是 10,9,7练习阶段: 中级
代码
/*---------------------------------------* 日期:2015-06-31* 作者:SJF0115* 题目:删除链表中的重复节点、剩余节点逆序输出* 来源:华为机试练习题-----------------------------------------*/#include <iostream>#include <map> #include <vector>#include "oj.h"using namespace std;/*功能: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。输入: pstrIn: 输入一个不带头节点的单向链表输出: pstrOut:删除内容重复的节点后,逆序排列的链表(不带头节点,链表第一个节点的内存已经申请)。返回:示例:输入链表的内容依次为 6,7,8,8,9,10,6则输出链表的内容依次应该是 10,9,7*//*本代码还是有BUG 当输入链表为 88888888时 pstrOut使用引用最好*/int iChanProcess(strNode * pstrIn,strNode * pstrOut){ if(pstrIn == NULL || pstrOut == NULL){ return -1; }//if 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)); }//if else{ Map[p->data] = Map[p->data]+1; }//else p = p->pstrNext; }//while // 为重复出现的逆序输出到pstrOut p = pstrIn; vector<int> vec; while(p){ if(Map[p->data] == 1){ vec.push_back(p->data); }//if p = p->pstrNext; }//while int size = vec.size(); if(size == 0){ return 0; }//if for(int i = 0;i < size-1;++i){ strNode* node = new strNode(); node->data = vec[i]; node->pstrNext = pstrOut->pstrNext; pstrOut->pstrNext = node; }//for pstrOut->data = vec[size-1]; /*printf("\n"); strNode* p1 = pstrOut; while(p1){ printf("*%d*\n",p1->data); p1 = p1->pstrNext; }//while*/ return 0;}/* 释放链表 */void vFreeChan(strNode * pstrChan){ strNode* p = pstrChan; while(p){ strNode* node = p; p = p->pstrNext; free(node); }//while return;}
0 0
- [华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
- 华为机试题:删除链表中的重复节点、剩余节点逆序输出
- 删除链表中的重复节点、剩余节点逆序输出
- 删除链表中的重复节点、剩余节点逆序输出
- 删除链表中的重复节点、剩余节点逆序输出
- 练习 删除链表中的重复节点、剩余节点逆序输出
- 逆序输出链表节点
- 删除链表中的重复节点
- 删除链表中的重复节点
- 删除有序链表中的重复节点
- 删除有序链表中的重复节点
- 实现链表的逆序输出和删除某节点
- 删除链表重复节点
- LeetCode 刷题: 删除已排序链表中的重复节点
- 删除有序链表中的重复节点2
- 面试题57:删除链表中的重复节点
- 华为机试题(10)--删除单向链表中的某些节点
- 删除链表重复节点-java
- XMPP协议及其扩展详解
- python处理excel的第三方库
- SQLite剖析(6):临时文件和内存数据库
- 一个小巧的C++Log输出到文件类 (转)
- scikit-learn:0. user_guide——需要学习的所有内容
- [华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
- 桶排序
- 最近很火!一名移动互联网员工写给老婆的信
- 学习html(2)
- Cirros linux 相关问题
- hdu前M大的数
- 获取ViewPager当前展示的Fragment
- 《统计学习方法》笔记(七)--logistic 回归
- Linux与JVM的内存关系分析