單鏈表——求兩個集合的差集 A,B集合求差集放到C連結串列中
阿新 • • 發佈:2018-12-11
#include <stdio.h> #include <malloc.h> typedef struct Node { int data; struct Node *next; }LNode,*LinkList; void list(LNode *A,LNode *B,LNode *C); void PrintList(LNode *head); void CreateList(LNode *A) { // 建立單迴圈連結串列,返回連結串列頭 LNode *p; int i,n; scanf("%d",&n); for(i = 0; i < n; i++) { p = (LNode *)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=A->next; A->next = p; A = p; } } void PrintList(LNode *head) { LNode *p = head->next; while(p) { printf("%d ",p->data); p = p->next; } } void list(LNode *A,LNode *B,LNode *C){ LNode *pa,*pb,*pc; int count; pa=A->next; pc =C->next; while(pa){ count = 0; pb=B->next; while(pb){ if(pa->data==pb->data) count++; pb=pb->next; } if(count==0){ pc = (LNode *)malloc(sizeof(LNode)); pc->data=pa->data; pc->next=C->next; C->next = pc; C = pc; } pa = pa->next; } } int main() { LNode *A,*B,*C; A= (LNode *)malloc(sizeof(LNode)); A->next=NULL; B = (LNode *)malloc(sizeof(LNode)); B->next=NULL; C = (LNode *)malloc(sizeof(LNode)); C->next=NULL; CreateList(A); CreateList(B); list(A,B,C); PrintList(C); return 0; }