zoukankan      html  css  js  c++  java
  • 华为笔试题04

    • 题目描述:

    删除链表中内容重复的节点(重复的节点只保留一个),剩余节点按照节点内容升序排列

    输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点只保留一个)。

    • 要求实现函数:

    void vChanProcess(strNode * pstrIn,strNode * pstrOut);

    【输入】 pstrIn:输入一个不带头节点的单向链表

    【输出】 pstrOut:将链表按照链表中data的大小降序排列后的链表(不带头节点,链表第一个节点的内存已经申请)。

    【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

     

    //利用 vector set 容器快速计算
    void vChanProcess(strNode *pstrIn,strNode *pstrOut)
    {
    	vector<int> a;
    	while(pstrIn->next!=NULL)
    	{
    		a.push_back(pstrIn->a);
    		pstrIn=pstrIn->next;
    	}
    
    	set<int> b;
    	b.insert(a.begin(),a.end());
    	for(set<int>::reverse_iterator iter=b.rbegin();iter!=b.rend();++iter)
    	{
    		pstrOut->a=*iter;
    		strNode* p_next=new strNode; 
    		pstrOut->next=p_next;
    		pstrOut=p_next;
    	}
    	pstrOut->next=NULL;
    
    }
    

      

  • 相关阅读:
    C++ using namespace std详解
    FlexEdit强大的文本编辑器(免费的!)
    串口扩展方案总结
    LED数码引脚图
    串口扩展方案总结
    C++ using namespace std详解
    Digital Mars Compiler简介及使用
    Digital Mars Compiler简介及使用
    poj1018
    poj3536
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3275858.html
Copyright © 2011-2022 走看看