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

浙公网安备 33010602011771号