相关定义: typedef int ElemType; typedef struct node { ElemType data; struct node *next; } NODE, *LinkList;已知A、B和C为3个递增有序的线性表,现要求对A表做如下操作,删除那些既在B中出现,也在C中出现的元素。以带表头结点的单链表作为线性表的物理结构,编写实现上述操作的算法。 函数原型:void TriLinkList(LinkList A,LinkList B,LinkList C);
时间: 2023-05-29 09:06:14 浏览: 79
顺序表逆置
void TriLinkList(LinkList A, LinkList B, LinkList C)
{
NODE *pa = A->next, *pb = B->next, *pc = C->next;
NODE *pre = A; // 记录当前结点的前一个结点,方便删除操作
while (pa != NULL && pb != NULL && pc != NULL) {
if (pa->data < pb->data) {
pre = pa;
pa = pa->next;
} else if (pa->data > pb->data) {
pb = pb->next;
} else { // pa->data == pb->data
if (pa->data < pc->data) {
pre = pa;
pa = pa->next;
} else if (pa->data > pc->data) {
pc = pc->next;
} else { // pa->data == pc->data
NODE *tmp = pa;
pre->next = pa->next;
pa = pa->next;
free(tmp);
}
}
}
}
阅读全文