【发布时间】:2017-01-01 12:24:43
【问题描述】:
我有这个结构包含指向相同结构类型 (peca) 的链接。问题是当我尝试在不同的函数中使用 peca->penext 时,调试器显示结构 peca 没有链接到下一个或上一个。我做错了什么?
typedef struct peca{
int index;
int esquerda;
int direita;
int disponibilidade;
struct peca *penext;
struct peca *peant;
}PECA;
typedef struct mao{
int index;
int tamanho;
PECA *ppeca;
struct mao *pnext;
}MAO;
typedef struct jogada{
int index;
PECA *ppeca;
struct jogada *pnext;
}JOGADA;
typedef struct jogo{
int nr_maos;
MAO *pmao;
JOGADA *pjog;
}JOGO;
void init_jogada(JOGADA *pj) {
pj->ppeca = (PECA *) malloc(sizeof(PECA) * 28);
PECA *paux = pj->ppeca;
for (int i = 0; i < 28; ++i) {
paux->index = i;
paux->disponibilidade = 1;
if (i == 0)
{
paux->peant = NULL;
paux->penext = paux++;
}
else if (i == 27)
{
paux->peant = paux--;
paux->penext = NULL;
}
else
{
paux->penext = paux++;
paux->peant = paux--;
}
paux++;
}
}
【问题讨论】:
-
你确定要
paux--之后paux++? -
为什么不呢?这样,当 peca 是下一个时, paux-- 将指向上一个。
-
提示:
1-1 != -1 -
paux->penext = paux++;相当于paux->penext = paux; paux += 1;可能不是你想要的?
标签: c struct linked-list