05070202225.cpp

来自「数据结构(清华版)」· C++ 代码 · 共 62 行

CPP
62
字号
//P18 2.25合并线性表
#include<iostream.h>
typedef int Elemtype;

//构建结构体
struct SList
{
	Elemtype *elem;
	int length,listsize;
};

//创建线性表
bool ListCreate(SList  &L,int n,Elemtype a[])
{
	int i;
	L.elem=new Elemtype[n+100];
	if(!L.elem) return false;
	L.length=n;
	L.listsize=n+100;
	for(i=0;i<n;i++) L.elem[i]=a[i];
	return true;

}


//交集合并函数
void ListSame (SList &a,SList &b,SList &c)
{
	int i(0),j(0),k(0);
	c.elem=new Elemtype[a.length];
	do
	{	
		if(a.elem[i]>b.elem[j])//a大时b向后移
			j++;
		else if(a.elem[i]<b.elem[j])//b大时a向后移
			i++;
		else
		{
			c.elem[k]=a.elem[i];
			k++;
			i++;
			j++;
		}
	}while(j<b.length&&i<a.length);
	c.length=k;
}

//主函数
void main()
{
	SList A,B,C;//声明线性表
	int a[]={1,3,4,7};
	int b[]={2,4,7};
	ListCreate( A,4,a);//调用构建函数
	ListCreate( B,3,b);
	ListSame ( A,B,C);//调用交集函数
	for(int i=0;i<C.length;i++)
		cout<<C.elem[i];
	cout<<endl;


}

⌨️ 快捷键说明

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