• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: C++  

资源简介

集合的交、并和差运算的实现。用有序单链表表示集合,实现集合的交、并和差运算。对集合中的元素,用有序单链表进行存储。实现交、并、差运算时,不另外申请存储空间。充分利用单链表的有序性,算法有较好的时间性能。

资源截图

代码片段和文件信息

#include 

using namespace std; 

typedef struct Node{ 
char data; 
Node *next; 
}Node*linkList; 

#define SIZE sizeof(Node) 
#define FALSE 0 
#define TRUE 1 

//初始化集合 
void InitlinkList(linkList Head) 

char ch;Node *p=Head; 
Head->next=NULL; 
Head->data=‘\0‘; 
cin>>ch; 
while(ch!=‘#‘) 

Node *newNode=(Node*)malloc(SIZE); 
newNode->data=ch; 
p->next=newNode; 
p=p->next; 
cin>>ch; 

p->next=NULL; 


//将表中的位置排序 
 void Sort(linkList head)
  {
   Node *p=head->next*q*r;
    if(p!=NULL)                
      {
        r=p->next;
        p->next=NULL;
        p=r;
        while(p!=NULL)
          {
            r=p->next;
            q=head;
            while(q->next!=NULL&&q->next->data>p->data)
               q=q->next;               //在有序表中找插入*p的前驱结点*q
            p->next=q->next;        //将*p插到*q之后
            q->next=p;
            p=r;
          }
      }
  }
  
  

//检查p1或p2所指向数据结点该不该加入到Head为起始的集合中^-^有点拗口,表达不是很好 
int Check(char chlinkList Head) 

Node *temp=Head->next; 
int flag=TRUE; 
while(temp!=NULL) 

if(temp->data==ch){//不需要将数据插入 
flag=FALSE; 
return flag; 

temp=temp->next; 

return flag; 


//合并两个集合 
linkList Merge(linkList Head1linkList Head2) 

linkList Head=(Node*)malloc(SIZE); 
Head->data=‘\0‘;Head->next=NULL; 
Node *p1=Head1->next; 
Node *p2=Head2->next; 
Node *p=Head; 
while(p1!=NULL&&p2!=NULL) 

if(p1->data==p2->data) 


if(Check(p1->dataHead)==TRUE) 

Node *newNode=(Node*)malloc(SIZE); 
newNode->data=p1->data; 
p->next=newNode; 
p=newNode; 
p->next=NULL; 


else 

if(Check(p1->dataHead)==TRUE) 

Node *newNode=(Node*)malloc(SIZE); 
newNode->data=p1->data; 
p->next=newNode; 
p=newNode; 
p->next=NULL; 

if(Check(p2->dataHead)==TRUE) 

Node *newNode=(Node*)malloc(SIZE); 
newNode->data=p2->data; 
p->next=newNode; 
p=newNode; 
p->next=NULL; 




p1=p1->next; 
p2=p2->next; 

while(p1!=NULL) 

if(Check(p1->dataHead)==TRUE) 

Node *newNode=(Node*)malloc(SIZE); 
newNode->data=p1->data; 
p->next=new

评论

共有 条评论