2010-12-05 49 views
0

这里是我想在链接列表的形式 alt text解析2-d矩阵到链表

代表矩阵的想法是,这是一个2-d矩阵。红色的字体是常规的[i] [j],蓝色是我想要存储在链接列表中的额外信息。

在这个矩阵中,我需要存储几个信息。

  1. INT行
  2. INT科尔姆
  3. INT标签
  4. bool值[按以蓝色显示](在屏幕上显示的值)
  5. ***右
  6. * ** left
  7. *** up
  8. *** down

问题是我会得到4个链表,如果我创建4个指针的数组[2-D矩阵]?我怎么才能得到方向指针???

如果您好奇,我正在努力解决卡诺图。 link text

任何帮助表示赞赏。谢谢!

+2

...和**为什么**你想把它存储在链接列表中?元素的顺序应该是什么?无论如何,每个节点中具有4个指针(右/左/上/下)的结构不是链接列表;这是一个图。) – 2010-12-05 00:57:00

+0

我不明白为什么你不能只在索引上工作,而不打扰链表。然后,如果每个元素有4个指针不再是一个列表。如果它们是双向的,它就是一种无向图。只需使用`structs`的二维数组,就可以轻松生活! – Jack 2010-12-05 00:58:54

回答

3

不要使用链表,请使用二维数组。快速&脏(或不完全):

struct Matrix { 
    struct Entry { 
     int label; 
     bool value; 
    }; 

    Entry *array; 
    size_t rowlen; 

    Matrix(int n) : rowlen(n) { array = new Entry[n*n]; } 
    ~Matrix() { delete[] array; } 

    Entry &at(int i, int j) { return array[i * rowlen + j]; } 

    // etc. 
}; 

无需方向性指针,只要使用一些聪明的加法和减法的逻辑。