【问题标题】:Accessing first node of linkedlist in C访问C中链表的第一个节点
【发布时间】:2017-04-04 17:06:51
【问题描述】:

所以我正在尝试使用该地址访问链表的第一个节点,这对我来说似乎没有多大意义。存储链表的结构体定义为

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

我已经用

初始化了一个链表
struct ListNode* l3;

每次我调用 l3->next 时,我都会在它前面加上

 l3->next = (void *) malloc(size * sizeof(struct ListNode));

我已将链表的第一个节点的地址存储为:

int* first;
first = (int *) l3; //noting that (void *) is also a valid cast

我确实从 0x1235270 中打印出有效的地址。我正在尝试使用

访问第一个节点的 val
printf("%d\n", first->val);

它给了我:

Line 29: request for member 'val' in something not a structure or union

错误。然而,当我首先在 leetcode 中返回时(因为我试图在那里做一个问题),它确实将它检测为一个链表(在输出中显示一个链表)。我想知道我做错了什么,以及我如何实际访问第一个节点的值。

【问题讨论】:

  • 请注意,struct ListNode* l3; 不会初始化 l3(除非它是一个全局变量)。您对l3->next 的分配也是可疑的(取消引用未初始化或空指针),并且它(本身)不会创建链接列表。
  • 至于您的错误,first 不是指向 ListNode 结构的指针,而是指向 int 的指针。您必须为作业投 l3 的事实应该表明您做错了。

标签: c pointers linked-list


【解决方案1】:

对不起,这是一个非常愚蠢的错误。一旦我将指针从 int * 转换为 struct node *,它就起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多