间隔的链接列表

时间:2010-08-22 08:12:24

标签: c++ c algorithm

我有以下两个问题。

  1. 我知道链接的概念 名单。什么是链表 间隔l

  2. 我需要在C / C ++中存储一个非常大(超过100位)的数字并对其执行按位操作。如果不使用任何大数字库,那么处理这种情况的最佳数据结构是什么?

  3. 谢谢

4 个答案:

答案 0 :(得分:4)

  1. 这个名字没有任何响铃。如果interval是对象,那么它只是一个存储这些对象的链表。也许你的意思是skip list
  2. 如果您使用的是C ++,请使用bitset。否则,我只会使用四个32位整数的经典表。

答案 1 :(得分:0)

对于问题的第二部分,请尝试std::bitset

答案 2 :(得分:0)

如果你想编写自己的类来处理大位数(我不知道你为什么会这样),你可以包装一个向量。你必须抓住自己的溢出物。这是一个巨大的痛苦,我只是提出来,因为这是我们参加C ++课程的最后一个项目,哈哈。我不推荐这个= P

答案 3 :(得分:0)

我对此发表评论是另一个问题,其他人问过这个问题。这个似乎指的是我的评论,所以我会解释我的意思。我的建议是:

struct interval_node {
      int index;
      struct interval_node* next;
}

其中index存储位“翻转”的所有点。如果你有类似11111111111100000000000的东西,这是一个巨大的内存优势,因为它只需要存储第一位为1(在某个结构之外)的事实,以及该位在第12个索引中翻转(基于0),而不是存储每个单独的位。只要序列没有像

这样的东西,这可以扩展到100,000位,而不会占用太多内存
1010101010101010101010101010101010101010101010

因为它在每一点都翻转。