解题思路:
这道题要求对三个非递减有序的线性表(其实就是广义递增)中的A表进行删除操作,需删除的元素为B、C表中均出现的元素。
我们比较好想到的一种方法,使用一个数组去储存重复元素,再进行去重操作,这种方式在重复率比较理想的情况下也不会造成太多的储存花销。
具体操作见代码,代码中有部分注释。
题解代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node;
void CreatList(Node *head,int n){
//创建链表
Node *p;
p = (Node*)malloc(sizeof(Node));
p = head;
for(int i=0;i<n;i++){
p->next = (Node*)malloc(sizeof(Node));
scanf("%d",&p->next->data);
p