【问题标题】:Can not print link list无法打印链接列表
【发布时间】:2013-10-23 10:15:14
【问题描述】:

我对 C 编码非常陌生(因此我正在从事的这个愚蠢的练习)。

我有一个链表、一个应该打印我的链表的函数和主函数。

不幸的是,我对 C 的了解还不够好,无法理解为什么不打印。更可惜的是这段代码并没有崩溃。

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

typedef struct Node {
    int data;
    struct Node* next;
} *Node_t;

void print_list(Node_t root) {
    while (root) {
        printf("%c ", root->data);
        root = root->next;
    }
    printf("\n");
}

int main () {
    int i;
    int n = 6;
    Node_t list = (Node_t)malloc(sizeof(struct Node) * n);
    Node_t root;

    for (i=0; i < n; i++) {
        list[i].data = i+1;
        if (i == n-1) {
            list[i].next = 0;
        }
        else {
            list[i].next = &list[i+1];
        }
    }

    root = &(list[0]);

    print_list(root);
}

【问题讨论】:

  • 从不转换 malloc() 的结果

标签: c pointers linked-list printf


【解决方案1】:

您的print_list 函数在printf 中有错误的格式说明符。应该是

printf("%d ", root->data);

更正的代码:

void print_list(Node_t root) 
{
    while (root) {
        printf("%d ", root->data);
        root = root->next;
    }
    printf("\n");
}

并且不需要转换 malloc 的结果 - 这应该没问题:

 Node_t list = malloc(sizeof(struct Node) * n);

【讨论】:

    【解决方案2】:

    printf("%d", root->data);而不是 printf("%c", root->data);因为您将整数数据分配给列表

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多