我有以下结构:
struct coords
{
int x;
int y;
struct coords* previous;
struct coords* next;
};
然后我有一个这些坐标的双向链表(格式为 (x,y)),它应该看起来像这样(其中 head 和 tail 是列表的开始和结束):
head tail
(-1, -1) <--> (0, 1) <--> (2, 1) <--> (1, 0) <--> (0, 2) <--> (-1, -1)
我想打印这个列表,所以我有以下代码:
struct coords* iter = head;
while (iter->next != NULL)
{
printf("\n [this node: (%d, %d)] -> [next node: (%d), (%d)]", iter->x, iter->y, iter->next->x, iter->next->y);
iter = iter->next;
}
printf("done with loop");
我得到的输出是这样的:
[this node: (-1, -1)] -> [next node: (0, 1)]
[this node: (0, 1)] -> [next node: (2, 1)]
[this node: (2, 1)] -> [next node: (1, 0)]
[this node: (1, 0)] -> [next node: (0, 2)]
[this node: (0, 2)] -> [next node: (-1, -1)]
这是正确的。但是,在打印最后一行后,我的程序立即崩溃而没有打印“循环完成”。