voidremoveDuplicate(node<"> voidremoveDuplicate(node<" />
欢迎来到天天文库
浏览记录
ID:12017897
大小:27.00 KB
页数:4页
时间:2018-07-15
《删除重复元素代码(用结点)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、删除重复元素代码(用结点)——《数据结构》代码:#include#include"node.h"usingnamespacestd;templatevoidremoveDuplicate(node*front);templatevoidremoveDuplicate(node*front){Ttarget;node*curr,*p,*front1;curr=front;while(curr!=NULL){target=curr->nodeValue;front1=curr;front1=front1->
2、next;node*curr1=front1,*prev=NULL,*q;while(curr1!=NULL)//以第一个为target,删除重复元素{if(curr1->nodeValue==target){if(prev==NULL)//删除第一个元素{q=front1;front1=front1->next;curr1=front1;deleteq;curr->next=curr1;}else{prev->next=curr1->next;//删除元素q=curr1->next;deletecurr1;curr1=q;}}else{prev=curr1;curr1=cur
3、r1->next;}}curr=curr->next;//进行下一轮循环,target指向下一个}}intmain(){node*front=NULL,*p;inti,a[10]={0,0,8,2,0,3,0,2,2,2};for(i=0;i<10;i++)front=newnode(a[9-i],front);//创建链表removeDuplicate(front);//删除重复元素p=front;while(p!=NULL){cout<nodeValue<<"";p=p->next;}cout<<"";//输出链表return0;}结果:(原始数据
4、:0,0,8,2,0,3,0,2,2,2)结果分析:在老师课件上的模版进行修改,修改的地方为:(1)要实现重复删除的话,要将curr1指针指向下一个位置,继续循环下去;else{prev->next=curr1->next;//删除元素q=curr1->next;deletecurr1;curr1=q;}(2)如数据0,0,8{0(target),0(要删除的第一个元素),8}在删除第一个元素后,要将target的指针指向8的地址,否则target的指针会悬空if(prev==NULL){{q=front1;front1=front1->next;curr1=front1;delet
5、eq;curr->next=curr1;}
此文档下载收益归作者所有