SWUST OJ #945 有序顺序表的合并操作的实现

本文介绍了一个C语言程序,展示了如何使用结构体和数组实现两个已排序整数表的合并,并通过指针传递参数,通过循环和条件判断进行元素大小比较。这是一个基础的数据结构问题,适用于OJ入门练习。
摘要由CSDN通过智能技术生成

题目

        我们借助数组实现,以下是例子分析。

#include<stdio.h>

struct node  //定义结构体,名为node,包含一个整型数组a,一个整型变量length 
{
	int a[100];
	int length;
};
            //定义两个指针LA,LB 
void Function(struct node *LA,struct node *LB)  //实现两表元素比较的函数 
{
	struct node Lc; //定义结构体变量Lc 
	struct node *LC=&Lc;  
	int i=0,j=0,k=0;
	while(i<LA->length&&j<LB->length)  //循环从这开始,进行A表与B表内元素大小比较,从0号元素开始 
	{
		if(LA->a[i]<LB->a[j])
		{
			LC->a[k]=LA->a[i];
			i++;
			k++;
		}
		else if(LA->a[i]==LB->a[j])
		{
			LC->a[k]=LB->a[j];
			j++;
			k++;
			LC->a[k]=LA->a[i];
			i++;
			k++;
		}
		else
		{
			LC->a[k]=LB->a[j];
			j++;
			k++;
		}
	}
	while(i<LA->length)
	{
		LC->a[k]=LA->a[i];
		i++;
		k++;
	}
	while(j<LB->length)
	{
		LC->a[k]=LB->a[j];
		j++;
		k++;
	}
	LC->length=LA->length+LB->length;  //由于表合并,两表长相加,得到新表的表长 
	for(k=0;k<LC->length;k++)   //逐个输出新表内元素 
	{
		printf("%d ",LC->a[k]);
	}
}
int main()
{
	struct node La,Lb;  //定义两个结构体La,Lb 
	struct node *LA=&La,*LB=&Lb; //通过指针传递给函数Function()处理 
	int m,n; //m为输入a表长,n为输入b表长 
	int i=0;
	scanf("%d",&m);
	LA->length=m;
	for(i=0;i<m;i++)
	{
		scanf("%d",&LA->a[i]); 
	}
	scanf("%d",&n);
	LB->length=n;
	for(i=0;i<n;i++)
	{
		scanf("%d",&LB->a[i]); 
	}
	Function(LA,LB);
	return 0;
}

这是OJ数据结构第一道题,思路是比较简单的,关键在于定义结构体、通过指针传递参数、分析比较时出现的各种情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值