设A=(a1,…,am)和B=(b1,…,bn)均为顺序表,A’和B’分别为A和B中除去最大共同前缀后的子表,求出A,B的大小

版权声明:版权归作者所有 https://blog.csdn.net/mo_chen1025/article/details/90145279

6. 设A=(a1,…,am)和B=(b1,…,bn)均为顺序表,A’和B’分别为A和B中除去最大共同前缀后的子表,若A’=B’=空表,则A=B;若A’=空表,而B’!=空表,或者两者都不为空表,且A’的首元小于B’的首元,则A<B;否则A >B. 试编程,求出A,B的大小。

# include <stdio.h>
# include <stdlib.h>
# define initsize 20//初始分配量
# define LISTINCREMENT 5//分配增量
typedef int ElemType;
typedef struct
{
	ElemType * elem;
	int length;
	int listsize;
}SqList;
void IntiList(SqList &L,int n)//建立一个表长为n的顺序表
{
	ElemType *p;
	L.elem = (ElemType *)malloc(initsize*sizeof(ElemType));
	if(!L.elem)
	{
		printf("分配失败");
	}
	printf("请依次输入顺序表的元素:\n");
	for(p = L.elem;p < L.elem+n;p++)
	{
		scanf("%d",p);
	}
	L.length = n;
	L.listsize = initsize;
}
void IntiList_NULL(SqList &L)//建立一个空的顺序表
{
	L.elem = (ElemType *)malloc(initsize*sizeof(ElemType));
	if(!L.elem)
	{
		printf("分配失败");
	}
	L.length = 0;
	L.listsize = initsize;
}
void ListInsert(SqList &L,int i,ElemType e)//在顺序表中第i个位置插入元素e
{
	ElemType *p,*q,*newbase;
	q=L.elem+i-1;//q为插入位置
	if(i<1||i>L.length+1)//i值不合法
	{
		printf("插入元素位置不合法\n");
	}
	if(L.length>=L.listsize)//当前储存空间已满,增加分配
	{
		newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
		if(!newbase)
		{
			printf("分配失败");
		}
		L.elem=newbase;
		L.listsize+=LISTINCREMENT;
	}
	for(p=L.elem+L.length-1;p>=q;p--)//插入位置及之后元素右移
	{
		*(p+1)=*p;
	}
	*q=e;
	++L.length;
}
void compare(SqList A,SqList B,SqList &A1,SqList &B1)
{
	int i;
	ElemType *pa,*pb;
	i=1;
	pa=A.elem;
	pb=B.elem;
	while(*pa==*pb)
	{
		ListInsert(A1,i,*pa);
		ListInsert(B1,i,*pb);
		pa++;
		pb++;
		i++;
	}
	if(A1.length!=0 || B1.length!=0)
	{
		if(*pa<*pb)
		{
			printf("A<B\n");
		}
		else
		{
			printf("A>B\n");
		}
	}
	else
	{
		printf("A=B\n");
	}
}
int main()
{
	int n1,n2;
	SqList A,B,A1,B1;
	printf("请输入顺序表A的元素个数n1:\n");
	scanf("%d",&n1);
	IntiList(A,n1);
	printf("请输入顺序表B的元素个数:\n");
	scanf("%d",&n2);
	IntiList(B,n2);
	IntiList_NULL(A1);
	IntiList_NULL(B1);
	printf("\n");
	compare(A,B,A1,B1);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/mo_chen1025/article/details/90145279