#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node* link;
};
typedef struct node NODE;
typedef struct node HEAD;
void main()
{
NODE *head;
NODE *node1;
node1 = malloc(sizeof(NODE));
node1->data = 6;
node1->link = head;
head = node1;
NODE *node2;
node2 = malloc(sizeof(NODE));
node2->data = 7;
node2->link = head;
head = node2;
NODE *ptr = head;
while(ptr != NULL)
{
printf("%d->",ptr->data); //printing of current node's data.
ptr = ptr->link; //<------here execution is being halted after printing 5 and 6
if(ptr == NULL)
{
printf("NULL");
}
}
}
输出为
7->6->
但我需要的预期输出
7->6->NULL
如果有必要,你能检查一下代码并更正我的代码吗?还请解释为什么我的执行在打印数据后被暂停,而没有执行printf("NULL"(语句
此处:
node1->link = head;
在这里,指针head
仍然未初始化,既不是内存块,也不是NULL
。所以链表实际上看起来像7 -> 6 -> ???
。由于它不是NULL
,它虽然满足ptr != NULL
,但不满足ptr == NULL
比较,一直在运行循环,但无法访问成员的数据(因为没有东西可以访问(,所以它停止了。
尝试初始化struct node *head = NULL
。