每当我尝试运行此代码时,它都会正常编译,但控制台中没有显示。它应该打印出链表中的所有数字,我不明白这是什么问题。
标题文件
#define RAND_MAX 100
struct num_node{
int num;
struct num_node* next;
};
struct num_node *create(struct num_node *list, int num);
void print_nums(struct num_node *list);
功能来源
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
struct num_node *create(struct num_node *list, int x){
struct num_node *current;
if (list == NULL){
list = (struct num_node*)malloc(sizeof(struct num_node));
list->num = x;
list->next = NULL;
return(list);
}
else{
current = (struct num_node *)malloc(sizeof(struct num_node));
current->num = x;
current->next = list;
return(current);
}
}
void print_nums(struct num_node *list) {
struct num_node *current;
for (current = list; current != NULL; current = current->next)
printf("%d\n", current->num);
}
主要
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "functions.h"
int main(){
struct num_node *head = NULL;
srand(time(NULL));
for (int i = 1; i <= 25; i++){
int x = rand() % 100;
create(head, x);
}
print_nums(head);
}
答案 0 :(得分:3)
您永远不会使用create
返回的值。
当您将head
传递给NULL
时,print_nums
仍为head = create(head, x);
。
应该是:{{1}}