程序不显示任何内容

时间:2015-02-04 23:59:51

标签: c

每当我尝试运行此代码时,它都会正常编译,但控制台中没有显示。它应该打印出链表中的所有数字,我不明白这是什么问题。

标题文件

#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);

}

1 个答案:

答案 0 :(得分:3)

您永远不会使用create返回的值。

当您将head传递给NULL时,print_nums仍为head = create(head, x);

应该是:{{1}}