单末链表实现交集和并集.docVIP

  • 1
  • 0
  • 约9.57千字
  • 约 9页
  • 2016-12-13 发布于湖南
  • 举报
#includeiostream.h class Node { friend class LinkList; int data; Node *link; public: Node(){link=NULL;} }; class LinkList { //链表 Node *head; //头指针 public: LinkList( ) { head=new Node(); } void Create( ); void print(); void Union(LinkList list1,LinkList list2); void Intersection(LinkList list1,LinkList list2); }; void LinkList::Create() { int flag=0; Node *p,*s,*q; p=new Node; cinp-data; while(p-data!=0) { do { flag=0; q=head-link; while(q) //剔除重复数据 { if(q-data==p-data) { flag=1; break; } else q=q-link; } if(flag==1) { cout您输入的值已经存在!endl; cinp-data; }else if(flag==0) break; }while(flag!=0); if(p-data==0) break; p-link=head-link; head-link=p; p=new Node; cinp-data; //建立链表 } } void LinkList::print() { Node *p; p=head-link; if(head-link==NULL) cout集合为空!endl; while(p!=NULL) { coutp-data ; p=p-link; } coutendl; } void LinkList::Union(LinkList list1,LinkList list2) { Node *p; Node *s; p=list1.head-link; while(p!=NULL) { s=new Node; s-data=p-data; s-link=head-link; head-link=s; p=p-link; } Node *head2=list2.head; Node *q=head2-link; int flag; while(q!=NULL) { flag=0; p=head-link; while(p!=NULL) { if(p-data==q-data) { flag=1; break; } p=p-link; } if(flag==0) { s=new Node; s-data=q-data; s-link=head-link; head-link=s; } q=q-link; } } void LinkList::Intersection(LinkList list1,LinkList list2) { Node *head1=list1.head; Node *head2=list2.head; Node *q=head2-link; Node *p; Node *s; int flag; while(q!=NULL) { flag=0; p=head1-link; while(p!=NULL) { if(p-data==q-data) { s=new Node; s-data=p-data; s-link=head-link; head-link=s; } p=p-link; } q=q-link; } } void main() { LinkList list1; LinkList list2; LinkList list3; LinkList list4; coutThe first list:endl; list1.Crea

文档评论(0)

1亿VIP精品文档

相关文档