C 如果链表中没有添加任何内容,并且您尝试打印该变量,那么链表是如何工作的

C 如果链表中没有添加任何内容,并且您尝试打印该变量,那么链表是如何工作的,c,linked-list,C,Linked List,我有一个链表,最后想把它打印出来。我的问题是,如果结构中的链表变量保持不变,并且没有向列表中添加任何内容,如果我尝试使用打印,而(school->list!=NULL)这是否可行 注意:我在任何时候都没有使列表为空,我只是分配了名称,没有触及列表 struct School{ char *name; Student *list; <--- Linked list } School; struct Student{ char *name; Studen

我有一个链表,最后想把它打印出来。我的问题是,如果结构中的链表变量保持不变,并且没有向列表中添加任何内容,如果我尝试使用
打印,而(school->list!=NULL)
这是否可行

注意:我在任何时候都没有使列表为空,我只是分配了名称,没有触及列表

struct School{
    char *name;
    Student *list;   <--- Linked list
} School;


struct Student{
    char *name;
    Student *next; 
} Student;
struct学校{
字符*名称;

学生*list;Student!=NULL)
(学校->列表!=NULL)

请参见此示例以打印列表:

#include <stdio.h>
#include <stdlib.h>

struct test{
     int code;
     struct test *next;

};

void pri(struct test *); // As you dont whant to change the values of list.
void cre(struct test **);// This put list at the start
int main(void){
   struct test *head;
   head = NULL; // you start from null.

   cre(&head,5);
   cre(&head,10);
   pri(head);   

   return 0;
}

void cre(struct test **head,int x){
     struct test *tmp;

     tmp = malloc(sizeof(struct test));
     tmp->code = x;
     tmp->next = (*head);
     (*head) = tmp;


}

void pri(struct test *head){
     while(head){ // while we dont reach end of list.
          printf("%d ",head->code);
          head = head->next; // Go to our next element
    }
    printf("\n");
}
#包括
#包括
结构测试{
int代码;
结构测试*下一步;
};
void pri(struct test*);//因为您不需要更改list的值。
void cre(struct test**);//此放置列表位于开始位置
内部主(空){
结构测试*头;
head=NULL;//从NULL开始。
综合招聘主任(5名),;
综合招聘主任(10人);
pri(负责人);
返回0;
}
无效cre(结构测试**头部,int x){
结构测试*tmp;
tmp=malloc(sizeof(struct test));
tmp->code=x;
tmp->next=(*头部);
(*头)=tmp;
}
无效优先级(结构测试*头){
while(head){//当我们还没到列表的末尾时。
printf(“%d”,标题->代码);
head=head->next;//转到我们的下一个元素
}
printf(“\n”);
}

我希望这个程序能帮助你打印列表。当然,如果我们在列表的末尾插入一个元素等,这会起作用。在你的论文中画一个图,以便更好地理解列表。

访问未分配的内存会导致未定义的行为。@EugeneSh。不过我不是在访问它,我只是用while(school->list!=NULL)检查它是否为NULL。那么,如果我没有使用列表,它会是空的吗?@John如果你没有设置它,为什么它会是空的?如果你使用
calloc()
分配内存,在典型的环境中,很有可能是
NULL
。如果
malloc()
,则值是不确定的。如果从未为变量赋值,则其值是未定义的。它可能是0(NULL),也可能是任何垃圾。使用此类值进行决策会产生未定义的行为。避免这种情况的方法:使用静态内存、使用calloc、使用memset、使用类似构造函数的函数。