此题为海豚浏览器的一个笔试题,当时做的时候感觉挺难,没想出来,后来考完试回来一想,觉得自己太粗心大意了,既然一个不太难的题都没有想到,追悔莫及。用一句话来表达自己对编程的理解:coding as saying~
例如给定三个区间:(2,4) (5,6) (7,9)
然后又输入一个区间 :(3.5,5),则可以断定此区间和上述区间中 (2,4)有相交区间。
在此多说一句,此问题我们不考虑单独的点相交,即认为有一个点相交不是区间相交。
然而输入(4,5)就没有相交的区间。题目要求,给出好的数据结构,那么我们就选择使用链表:
typedef struct node
{
float start;
float end;
struct node *next;
}node,*List;
区间有交集的条件是什么呢,假设当前想判断的区间是(start,end),请看下图:
从上面的图可以知道,给定区间(start,end)中如果start或者end在区间(temp->start,temp->end)中,则说明给定区间和原来的一些区间中的至少一个有相交区间。
下面给出程序:
#include<stdio.h&