⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiaobingcha.txt

📁 简单链表运算啊,用链表实现交,并,差,而不可以开辟其他空间
💻 TXT
字号:
#include <iostream.h>
#include<malloc.h>
#include<stdlib.h>
struct LNode{
	int data;
	struct LNode *next;
};
void Createlist_l(LNode* &l,int n){ 
	l=(LNode*)malloc(sizeof(LNode));
	l->next=NULL;
	for(int i=n;i>0;--i){
		LNode* p=(LNode*)malloc(sizeof(LNode));
		cin>>p->data;
		p->next=l->next;
		l->next=p;
	}
}

void getlist_l(LNode* &l){
	LNode* p=l->next;
	while(p){
		cout<<p->data<<"  ";
		p=p->next;
	}
	cout<<endl;
}
void union_l(LNode* &la,LNode* &lb){
	LNode* q=la;
	LNode* pa=la->next;
	LNode* pb=lb->next;
	while(pa){
		pb=lb->next;
		while(pb){
			if(pa->data==pb->data) break;
			else pb=pb->next;
		}
		if (pb){
			q->next=pa->next;
			free(pa);
			pa=q->next;
		}
		else{
			q=pa;
			pa=pa->next;
		}
	}	
}
void union_2(LNode* &la,LNode* &lb){
	LNode* q=lb;
	LNode* pa=la->next;
	LNode* pb=lb->next;
	while(pb){
		pa=la->next;
		while(pa){
			if(pa->data==pb->data) break;
			else pa=pa->next;
		}
		if (pa){
			q->next=pb->next;
			free(pb);
			pb=q->next;
		}
		else{
			q=pb;
			pb=pb->next;
		}
	}
	pa=la->next;
	while(pa->next)
		pa=pa->next;

	pa->next=lb->next;
	free(lb);
}
void union_3(LNode* &la,LNode* &lb){
	LNode* q=lb;
	LNode* pa=la->next;
	LNode* pb=lb->next;
	while(pb){
		pa=la->next;
		while(pa){
			if(pa->data==pb->data) break;
			else pa=pa->next;
		}
		if (pa){
                        q=pb;
                        pb=pb->next; 
			
		}
		else{
			q->next=pb->next;
			free(pb);
			pb=q->next;
		}
	}
}
void main(){
	LNode* la, *lb;
	int n;
	cout<<"la_length=";
	cin>>n;
	cout<<"按非递增顺序输入1:";
	Createlist_l(la,n);
	cout<<"lb_length=";
	cin>>n;
	cout<<"按非递增顺序输入2:";
	Createlist_l(lb,n);
	cout<<"\n\n非递减有序线形表la:";getlist_l(la);
	cout<<"非递减有序线形表lb:";getlist_l(lb);
	cout<<"\n\n";
int i;
   cout<<"chose 1:差集  2:并集 3:交集"<<endl;
   	cin>>i; 
   switch(i){
  
   case 1:	union_l(la,lb);
	   cout<<"差集:\n";
	   cout<<" ";
	 getlist_l(la);		break;
   case 2:  union_2(la,lb);cout<<"并集:\n";
	cout<<" ";
	getlist_l(la);	 break;
   case 3:  union_3(la,lb);cout<<"交集:\n";
	cout<<" ";
	getlist_l(lb);	 break;
}

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -