我有一个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]
会指向相邻的相应单元格。所以基本上,如果你形成一个单元格的链表,整个结构看起来就像一个邻接表。