题目


思路
善用stable_sort
然后开一个新的vector去重
别忘记改指针
代码
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
// typedef struct node {
// int data;
// struct node* next;
// // 其他数据域成员
// }NODE;
bool cmp(NODE* A, NODE* B)
{
return A->data < B->data;
}
NODE* distinctSort(NODE* head)
{
if(!head) return NULL;
vector<NODE*> v;
NODE* h = head;
while(h != NULL)
{
v.push_back(h);
h = h->next;
}
stable_sort(v.begin(), v.end(), cmp);
vector<NODE*> out;
for(int i = 0; i < v.size(); i++)
{
if(!i)
out.push_back(v[i]);
else if(v[i]->data != v[i - 1]->data)
{
out.push_back(v[i]);
out[out.size()-2]->next = out[out.size()-1];
}
}
out[out.size()-1]->next = NULL;
return out[0];
}
本文介绍了一种使用稳定排序和向量容器实现链表元素排序并去除重复元素的方法。通过自定义比较函数和利用STL中的stable_sort进行排序,再遍历向量去除重复项,最终返回处理后的链表头节点。
363

被折叠的 条评论
为什么被折叠?



