删除一个链表中绝对值相等的结点,保留第一个,data⇐n
typedef struct node{
int data;
node* link;
}Node;
int abs(int a){
return a>=0?a:-1*a;
}
void del_node(Node* current,Node* prev){
prev->link=current->link;
free(current);
}
void del_absolute_equal(Node* node,int n){
int bucket[n];
for(int i=0;i<n;i++){
bucket[i]=0;
}
Node* prev;
while(node!=NULL){
int data=abs(node->data);
if(data!=NULL){//判断是否是头结点
if(bucket[data]==0){/判断是否已经有相同绝对值的数
bucket[data]=1;
}
else{//若已有,则删除该节点
del_node(node,prev);
}
}
prev=node;
}
}