算法思想:只需将链表A中共有的节点删除即可。定义指针p,q分别指向A,B的头结点,当A中元素小于B的时,p右移一位(B类似操作),值相等时,删除该节点,任一指针为空时停止循环
代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode;
void differ(LNode *&A,LNode *B) //删节点
{
LNode *p,*q,*s;
p=A;
q=B;
while(p->next!=NULL&&q->next!=NULL)
{
if(p->next->data==q->next->data)
{
s=p->next;
p->next=p->next->next;
free(s);
}
else if(p->next->data<q->next->data) p=p->next;
else if(p->next->data>q->next->data) q=q->next;
}
}
void create(LNode *&A,int n) //创建链表
{
int i,a[30];
LNode *s,*r;
A=(LNode *)malloc(sizeof(LNode));
A->next=NULL;