c-为什么在打印链接列表后我的执行被停止


#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

相关内容

  • 没有找到相关文章

最新更新