我在Xcode中练习链表的创建时遇到个问题,代码可以正常运行,
只是我在调试时发现链表每个结点的指针域都可以一级一级展开,
如截图所示,我的代码是按照书上敲下的,应该没有大问题,所以想了解下链表中这种指针域无限展开是什么原理?多谢各位了!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct NODE
{
int data;
struct NODE *next;
};
struct NODE *CreateLink(void);
void OutputLink(struct NODE *head);
int main(void)
{
struct NODE *head;
head = CreateLink();
OutputLink(head);
return 0;
}
struct NODE *CreateLink(void)
{
int len;
int i;
int val;
struct NODE *head = malloc(sizeof(*head));
struct NODE *move = head;
move->next = NULL;
if (NULL == head) {
printf("动态内存分配失败,程序终止\n");
exit(-1);
}
printf("请输入您需要生成的链表结点的个数: len = ");
scanf("%d",&len);
for (i = 0; i < len; i++) {
struct NODE *fresh = malloc(sizeof(*fresh));
if (NULL == fresh) {
printf("分配失败,程序终止!");
exit(-1);
}
printf("请输入第%d个结点的值: ",i + 1);
scanf("%d", &val);
fresh->data = val;
move->next = fresh;
fresh->next = NULL;
move = fresh;
}
return head;
}
void OutputLink(struct NODE *head)
{
struct NODE *move = head;
// move = move->next;
while (move->next != NULL) {
printf("%d ", move->next->data);
move = move->next;
}
printf("\n");
}