LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 980|回复: 5

(zz)求下面这个题目的思路,谢谢

[复制链接]
发表于 2007-4-11 19:15:19 | 显示全部楼层 |阅读模式
题目:一个链表,链表的节点是两个数表示一个范围,链表顺序排列的,现在要实现新节点的插入动作,插入后新的链表要保持顺序,并且不重复的范围.
例如:
    [1,2],[7,8]插入[4,4]后变为[1,2],[4,4],[7,8]   
     [1,2], [5,6] 插入[3,3]后变为 [1,3],[5,6]
      [1,4], [12,18]插入[6, 20]后变为[1,4],[6,18]
    [1,4], [12,18]插入[12, 16]后变为[1,4],[12,18].....
发表于 2007-4-11 21:58:56 | 显示全部楼层
感觉到怪怪的,链表结点的两个数是怎样表示的呢?它们的关系是怎样的呢?
是否结点索引的范围是一个二位数,还是...?
请把问题描述清楚后,大家来讨论一吧!
回复 支持 反对

使用道具 举报

发表于 2007-4-12 09:14:38 | 显示全部楼层
Post by johnhhj
题目:一个链表,链表的节点是两个数表示一个范围,链表顺序排列的,现在要实现新节点的插入动作,插入后新的链表要保持顺序,并且不重复的范围.
例如:
    [1,2],[7,8]插入[4,4]后变为[1,2],[4,4],[7,8]   
     [1,2], [5,6] 插入[3,3]后变为 [1,3],[5,6]
      [1,4], [12,18]插入[6, 20]后变为[1,4],[6,18]
    [1,4], [12,18]插入[12, 16]后变为[1,4],[12,18].....
int a[j], b[k][m], c[r][t];
if (((i + j) < r)&&((r + t) <= m))
{
   insert c ;
}
if ((i + j ) >= r)
{
  j = r;
}
if ((r + t) > m)
{
  k = r;
}
大概是这样的,不过中间的判断应该再细化一下.
回复 支持 反对

使用道具 举报

发表于 2007-4-12 22:38:49 | 显示全部楼层
这里有一个问题啊,按照你给的例子,你这个链表的长度是固定,因为每次进行插入动作,仅仅是把与其相关的节点的值变化了。并没有再插入一个新的节点哦!!
回复 支持 反对

使用道具 举报

发表于 2007-4-13 09:08:19 | 显示全部楼层
Post by sighforever
这里有一个问题啊,按照你给的例子,你这个链表的长度是固定,因为每次进行插入动作,仅仅是把与其相关的节点的值变化了。并没有再插入一个新的节点哦!!
第一种情况的时候是加入了一个新结点的啊.
回复 支持 反对

使用道具 举报

发表于 2007-4-13 19:24:00 | 显示全部楼层
Post by scutan
第一种情况的时候是加入了一个新结点的啊.
哦,对不起,没注意。
那再问一下,如果我要是
[1,4],[7,18]插入一个[3, 20]的话是不是就变成[1, 20]呢?
如果插入的是[5,6]呢?是不是变成[1, 18]了呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表