1.设两个带头结点单链表的头指针分别为A和B,且表中结点数据值均为整型,下面算法产生表A和B的并集,并以表C存储。
程序代码:
typedef struct node{
int data;
struct node *next;
}lnode,*link;
link union(link A,link B){
link C,r,p,q;
C=r=(link)malloc(sizeof(lnode));//C表的头结点,C作为头结点的指针,r作为变量指针使用
p=A->next;//p指向A链表的一个结点,作为A的遍历指针
while(p){//这个循环将A表复制到C
q=(link)malloc(sizeof(lnode));//q作为临时指针变量
q->data=p->data;//复制数据域数据
r->next=q;//将q链到r指向的C表
r=r->next;//保证r向后移动
p=p->next;//保证p向后移动
}
r->next=NULL;//循环结束后,r指针所指结点为最后一个结点,将next域置空
q=B->next;//q这时作为B的遍历指针
while(q){//遍历B链表,B中每个节点与A中所有结点比较
p=A->next;
while(p)