顺序表比较

【问题描述】设A=(a1,...an)和B=(b1,...bn)均为顺序表,A'和B'分别为A和B中除去最大共同前缀后的子表。若A'=B'=空表,则A=B;若A'=空表,而B'≠空表,或者两者均不为空表,且A'的首元小于B'的首元,则A<B;否则A>B。试写一个比较A,B大小的算法。

【输入形式】输入A、B两表的整数序列,整数之间用“,”号分开。

【输出形式】A>B输出1;A=B输出0;A<B输出-1。

【样例输入】

5 //该行为A表元素个数

2,3,4,10,15 //该行为A表数据

6  //该行为A表元素个数

2,3,4,21,12,27  //该行为A表数据

【样例输出】-1  //(表示A<B)

【样例说明】输入样例中,去掉前缀2,3,4 表A'为(10,15),表B'为(21,12,27)

【评分标准】

先仔细审题!

  1.AB表都不为空——>比较子表A与子表B,谁的首元素小

  2.AB表中存在空表,谁空谁小

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	int a[100], b[100], x = 0, n,min=0,y = 0;
	cin >> x;
	for (int i = 0; i < x; i++)
	{
		cin >> a[i];
		getchar();
	}
	//输入a顺序表
	cin >> y;
	for (int i = 0; i < y; i++)
	{
		cin >> b[i];
		getchar();
	}
	//输入b顺序表
	if (x > y)
		min = y;
	else
		min = x;
    //取a和b中最小值进行比较,在a[i]与b[i]之间有某一小值,则知比较结果
	//循环结束后,若没有比较出来大小(标志点)说明ab中某表为空,对原AB表进行数量比较即可
	int f = 0;
		for (int i = 0; i < min; i++)
		{
			if (a[i] > b[i])
			{
				cout << "1" << endl; f = 1;
				break; 
			}
			if (a[i] < b[i])
			{
				cout << "-1" << endl; f=1;
				break;
			}
		}
		if (f == 0)          //说明存在空表 进行数量比较
		{
			if (x == y)      //两个表的元素数量相同,都为相同项,则说明子表都为空
				cout << "0" << endl;
			else if(x>y)
				cout << "1" << endl;
			else
				cout << "-1" << endl;
		}
		return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值