p45-08

数据结构与算法 p45-08

已知两个元素按值递增有序排列的线性表A和B,且同一表中的元素值各不相同。

试构造一个线性表C,其为A和B中的元素的交集,且表C中的元素也按值递增有序排列


A,B,C都是单链表表时

http://blog.csdn.net/weimengnvbianba/article/details/15029911



A,B,C都是顺序表时


#include<iostream.h>
typedef int T;

template <class T>
class SqList  
{
	private:
		T *elem; 
		int length; 
		int listsize;
	public:
		SqList(int m) ;
		~SqList();
		void CreateList(int n);
		void createList(int n,int a[]);
		T GetElem(int i);
		void ListDisp();
};

template<class T>
SqList<T>::SqList(int m)
{                
	elem=new T[m];
	length=0;
	listsize=m;
}

template<class T>
SqList<T>::~SqList()
{
	delete [] elem;
	length=0; 
	listsize=0; 
}

template<class T>
void SqList<T>::CreateList(int n)
{
	T i=0,k,start;
	cout<<"请输入初始值及步长:";
	cin>>start>>k;
	for(i=0;i<n;i++)
	   elem[i]=start+k*i;
	length=n;
}


template<class T>
void SqList<T>::createList(int n,int a[])
{
	for(int i=0;i<n;i++)
	 elem[i]=a[i];
	length=n;
}

template<class T>
T SqList<T>::GetElem(int i)
{
	T e;
	e=elem[i];
	return e;
}

template <class T>
void SqList<T>::ListDisp()
{
	for(int i=0;i<length;i++)
	{
		cout<<elem[i]<<"  ";
		
	}
	cout<<endl;
}


int main()
{
	int i,t=0;
	int a[20];
	T ea,eb;
	SqList<int> La(20),Lb(20),Lc(20);
	int la_len,lb_len;
	cout<<"请输入要创建A集合中元素个数:";
	cin>>la_len;
	cout<<endl;
	La.CreateList(la_len);
	cout<<"La:"<<"\t";
	La.ListDisp();

	cout<<endl<<"请输入要创建的B集合中元素个数:";
	cin>>lb_len;
	cout<<endl;
	Lb.CreateList(lb_len);
	cout<<"Lb:"<<"\t";
	Lb.ListDisp();
	for(i=0;i<la_len;i++)
	{
		ea=La.GetElem(i);
		for(int j=0;j<lb_len;j++)
		{
			eb=Lb.GetElem(j);
			if(La.GetElem(i)<Lb.GetElem(j))
				break;
			if(La.GetElem(i)==Lb.GetElem(j))
			{
	        	a[t]=Lb.GetElem(j);
				t++;
			}
			
		}
	}
	Lc.createList(t,a);
	cout<<endl<<"表A和表B的交集表C的元素如下:"<<endl;
	cout<<"Lc:"<<"\t";
	Lc.ListDisp();
	cout<<endl; 
	return 0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值