- 题目描述:
输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。
- 要求实现函数:
void vChanProcess(strNode * pstrIn,strNode * pstrOut);
【输入】 pstrIn:输入一个不带头节点的单向链表
【输出】 pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请)。
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
- 示例
输入链表的内容依次为 6,7,8,8,9,10,6
则输出链表的内容依次应该是 10,9
关键部分代码为
int len=20; int *a=new int [len]; for(int i=0;i<len;++i) { a[i]=rand()%7; cout<<a[i]<<" "; } cout<<endl; set<int> sto; for(int i=0;i<len;++i) { int temp=a[i]; for(int j=i+1;j<len;j++) { if(a[j]==temp) { sto.insert(j); sto.insert(i); } } } vector<int> out; int count=0; for(int i=0;i<len;++i) { set<int>::iterator iter; iter=find(sto.begin(),sto.end(),i); if(iter==sto.end()) { out.push_back(a[i]); count++; } } for(vector<int>::iterator iter1=out.begin();iter1!=out.end();++iter1) cout<<*iter1<<" "; return 0;