如何从矩阵中制作链表?

时间:2014-05-24 14:15:02

标签: c linked-list

我有一个3x3维度的小矩阵

ABC
DEF
GHI

我们称之为矩阵[l] [c],其中l代表行,c代表列。 我定义了这个结构:

typedef struct cell{
    int *neighbours[4];
    int flag;
    char value;
}NODE

我想根据矩阵做一个链表。邻居必须拥有该单元格的邻居(向上,向下,向右,向左)的地址,标记它首先被定义为0,而值只是单元格所具有的字母。

如何构建此链表以存储矩阵中所有单元格的信息?我必须告诉我对链表的经验很少。从未与他们合作

谢谢

2 个答案:

答案 0 :(得分:1)

struct cell{
    struct cell *nesw[4];
    int flag;
    char value;
} cells[9] =
{ { { NULL   , cells+1, cells+3, NULL   }, 0, 'a' }
, { { NULL   , cells+2, cells+4, cells  }, 1, 'b' }
, { { NULL   , NULL   , cells+5, cells+1}, 2, 'c' }

, { { cells  , cells+4, cells+6, NULL   }, 3, 'd' }
, { { cells+1, cells+5, cells+7, cells+3}, 4, 'e' }
, { { cells+2, NULL   , cells+8, cells+4}, 5, 'f' }

, { { cells+3, cells+7, NULL   , NULL   }, 6, 'g' }
, { { cells+4, cells+8, NULL   , cells+6}, 7, 'h' }
, { { cells+5, NULL   , NULL   , cells+7}, 8, 'i' }

};

答案 1 :(得分:0)

您可以将每个单元格存储为链接列表的节点。

struct LinkedListNode;

typedef struct cell{
    struct LinkedListNode* neighbours[4];
    int flag;
    char value;
}NODE;

struct LinkedListNode {
    NODE data;
    struct LinkedListNode* next;
};

每个节点将包含一个单元格。 neighbours[i]将指向相应的相邻单元格。所以基本上,如果你形成一个单元格的链接列表,整个结构将看起来像一个邻接列表。