#include #include typedef struct Node { int data; struct Node* next; }Node; Node* getNewLinklist(int val) { Node* node = (Node*)malloc(sizeof(Node)); node->data = val; node->next = NULL; return node; } Node* insert(Node* head,int val) { Node* new_node = getNewLinklist(val); if (head == NULL) { return new_node; } new_node->next = head; return new_node; } Node* compare(Node* A, Node* B) { Node new_nodeb; new_nodeb.next = B; Node* prevb = &new_nodeb,*tempor = prevb->next; while (tempor) { for (Node* p = A; p; p = p->next) { if (p->data == tempor->data) { prevb->next = tempor->next; } } prevb = tempor; tempor = tempor->next; } return new_nodeb.next; } int main() { Node* A = NULL,*B = NULL; int arr1[] = { 1,2,3,4,5 }; int arr2[] = { 4,5,6,7,8 }; for (int i = 0; i next) { printf("%d ",p->data); } } 1.问题描述 以单链表表示集合,求先后输入的两个集合的差。 2.基本要求 输入集合A和集合B,计算集合A、B的差C并输出。 3.算法提示 假设两个已知集合A和B。根据集合运算的规则可知,集合A-B中包含所有属于集合A而不属于集合B的元素。因此,为了求A-B,需建立表示集合A 的单链表,然后对B中的每个元素X,在集合A的链表中进行查找,若存在和X相同的元素,则从该链表中删除。 运行结果的话只有5被删除了,而4并没有删除是什么原因 对代码进行下面的修改后,代码运行反而不会出现结果了 while (tempor) { int k = 0; for (Node* p = A; p; p = p->next) { if (p->data == tempor->data) { prevb->next = tempor->next; k = 1; } } if (k == 0) { prevb = prevb->next; tempor = tempor->next; } } 