c -如何从矩阵中生成链表

  • 本文关键字:链表 linked-list
  • 更新时间 :
  • 英文 :


我有一个3x3维的小矩阵

ABC
DEF
GHI

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

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

我想做一个基于矩阵的链表。邻居必须有该单元格邻居的地址(上,下,右,左),标志它一开始定义为0,值就是单元格的字母。

我该如何构建这个链表来存储矩阵中所有单元格的信息?我必须说我对链表几乎没有什么经验。从未与他们共事过

谢谢

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' }
};

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

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

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

相关内容

  • 没有找到相关文章

最新更新