• 华为笔试题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;
    
    }
    

      

  • 相关阅读:
    设计模式目录
    垃圾收集器
    598. Range Addition II
    Java中的四种引用
    垃圾回收算法
    645. Set Mismatch
    java 8中撤销永久代,引入元空间
    L2-013. 红色警报 (并查集)
    POJ 1127 Jack Straws (线段相交)
    L2-014. 列车调度 (DP)
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3275858.html
Copyright © 2020-2023  润新知