链表去重
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/46ddc8ce66a80125ba9d7cfcd0f95be3.png)
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int address;
int key;
int next;
}Elem;
int main(){
int address_1;
int n;
int i = 0, j = 0, k = 0, count = 0;
Elem node;
Elem *old_array, *new_array;
scanf("%d %d", &address_1, &n);
old_array = (Elem*)malloc(n*sizeof(Elem));
new_array = (Elem*)malloc(n*sizeof(Elem));
for(i = 0; i < n; i ++){
scanf("%d %d %d", &old_array[i].address, &old_array[i].key, &old_array[i].next);
}
for(i = 0; i < n; i ++){
if(old_array[i].address == address_1){
node = old_array[i];
new_array[k] = old_array[i];
k++;
break;
}
}
for(j = 1; j < n; j ++){
for(i = 0; i < n; i ++){
if(old_array[i].address == node.next){
node = old_array[i];
new_array[k] = node;
k++;
break;
}
}
}
count = n;
for(j = 1; j < n; j ++){
for(i = 0; i < j; i ++){
if(abs(new_array[i].key) == abs(new_array[j].key)){
k = j-1;
while(1){
if(new_array[k].address == -1){
k--;
continue;
}
new_array[k].next = new_array[j].next;
new_array[j].address = -1;
break;
}
count --;
break;
}
}
}
printf("%d\n", count);
node = new_array[0];
i = 0;
if(count == 1){
printf("%05d %d -1\n", node.address, node.key, node.next);
}else{
printf("%05d %d %05d\n", node.address, node.key, node.next);
}
while(count>1){
for(i = 1; i < n; i ++){
if(new_array[i].address == node.next){
node = new_array[i];
if(count == 2)
{
printf("%05d %d -1\n", node.address, node.key, node.next);
}else{
printf("%05d %d %05d\n", node.address, node.key, node.next);
}
break;
}
}
count--;
}
return 0;
}