У меня есть следующий код:Добавление узлов в круговом списке
int InsForward (TL2 p, void* x){
/* Inserta a node a step forward from the supplied p*/
TL2 h = (TL2)calloc(1,sizeof(TCel2));
if (!h)
return 0;
h->pre = p->pre;
h->nxt= p;
p->pre = h;
p->pre->nxt = h;
h->info = x;
return 1;
}
Как я могу добавить новый узел в кольцевом списке, в котором сторожевые уже выделены? Он прослушивал меня часами, поскольку узлы распределены, но ссылки увязаны, он показывает мне одно и то же значение данных для каждого, кроме часового, что прекрасно.
Что я пробовал:
/* TCel a, int p, FILE fi*/
while(fscanf(fi,"%i%i", &(p.x), &(p.y)) == 2)
if (InsForward(a, &p) == 0)
break;
структура:
typedef struct cel2
{
struct cel2 *pre, *nxt;
void* info;
} TCel2, *TL2;
LE: Я обновил код, и написал это, чтобы проверить это: /* TL2 и */
for (u = a->nxt; u != a; u = u->nxt)
printf("%i %i\n", u->info, u->info);
Да, информация недействительна, но мне было любопытно, если бы ячейки были разными ... Я полагаю, нет:
2686632 2686632 2686632 2686632 2686632 2686632
Что здесь происходит ?!
Спасибо, обновил свой пост, кажется, работает в настоящее время ссылки, но информация одинакова в каждой клетке? ? – SpaceNecron
@SpaceNecron Вы печатаете указатели с '% i' вместо'% p'. Что такое 'urm'? Лучше всего задать новый вопрос * вместо того, чтобы обновлять этот вопрос и создавать беспорядок. – 2013-03-29 20:29:19
Сделал это, спасибо – SpaceNecron