#include#include typedef struct LNode{ int data; struct LNode* next; }LNode,*LinkList; void DeleteReAbs(LinkList &L,int n){ //创建n + 1 大小的数组 //这个数组下标可以保存 0 到 n 大小的数,和题目中说的data的绝对值小于 n 正好对应 int *flag = (int*)malloc(sizeof(int) * (n + 1)); //初始化数组 for(int i = 0; i < n + 1; i++){ flag[i] = 0; } //断链,如果符合条件再重新插入L LinkList p = L -> next,q,r = L; L -> next = NULL; while(p){ q = p -> next; if(flag[abs(p -> data)] == 0){//abs是取绝对值 r -> next = p; r = p; p = q; flag[abs(p -> data)] = 1; }else{ free(p); p = q; } } free(flag); r -> next = NULL; }



