区间求并集c++实现

本文介绍如何使用C++编程语言,对给定的一系列区间进行求并集的操作,详细阐述了算法的实现过程。
摘要由CSDN通过智能技术生成

RT.给定若干区间求其并集实现。

#include <iostream>

#define NULL 0

using namespace std;


struct section//每个小区间
{
   double start;
   double end;
   bool isuse;
};

struct whole_section//区间并集
{
   section* sec;
   int length;
   int size; 
};

void init(whole_section* ws)//初始化区间集
{
	if((ws->sec=(section*)malloc(50*sizeof(section)))==NULL)
		return ;
	ws->size=50;
	ws->length=0;
}

void insert(whole_section* ws,double tstart,double tend)//插入
{
	if(tstart>=tend)
		return ;
	int i;
	bool flag=false;
	for(i=0;i<ws->length;i++)
	{
		if(ws->sec[i].isuse==false)//如果是已经不用的小区间则跳过
			continue;
		if(tstart<ws->sec[i].start)//分为六种情况
		{
		   if(tend<ws->sec[i].start)
		   {
		      continue;
		   }
		   else if(tend<=ws->sec[i].end)
		   {
			   ws->sec[i].start=tstart;
			   flag=true;
			   break;
		   }
		   else
		   {
			   ws->sec[i].start=0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值