这是数据结构中的一个问题:写一个算法将单链表中重复的结点删除,使所得的结果表中各结点值均不相同。

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:34:40
最好是能写出程序来!!谢了!!

做个循环,用这个接点和它后面的每个接点比较,有相等的就把这个接点删除,然后下一个,循环一遍就行了~程序就自己写了

#include <iostream.h>
#include <stdlib.h>

struct nlist{
int *list;
int size;
int maxsize;
};

//初始化
void initlist(nlist &l){
l.maxsize=20;
l.list=new int[l.maxsize];
l.size=0;
}

//清空
void clearlist(nlist &l){
if(l.list!=NULL) {
delete []l.list;
l.list=NULL;
}
l.maxsize=0;
l.size=0;
}

//插入
bool insertlist(nlist &l,int x,int pos){
int i;
if(pos<-1) return false;
if(pos==-1) pos=l.size+1;
else if(pos==0)
{ for(i=0;i<l.size;i++)
if(x<l.list[i])break; pos=i+1;}
for(int j=l.size-1;j>=pos-1;j--)
l.list[j+1]=l.list[j];
l.list[pos-1]=x;
l.size++;
return true;
}

//遍历线性表
void traverlist(nlist &l){
for (int i=0;i<l.size;i++)
cout<<l.list[i]<<