这个打印函数如何将指针移动到链表中的下一个项目?

时间:2011-10-21 23:50:31

标签: c function pointers recursion

struct ll {
    int num;
    struct ll *next;
};

struct ll *head;

main() {
    /* code to assign head pointer some memory */

    print(head->next);
}

我读到上面代码中的print()函数将指针移动到下一个项目。如何将头指针移动到下一个项目?

2 个答案:

答案 0 :(得分:2)

print()必须如下所示:

print(struct ll *foo) {
  // code
  head = head->next;
  // other code
}

请注意,这不是很好的代码,但是这就是head指向下一个项目的方式。

答案 1 :(得分:1)

您的head指针是全局的,您只需在遍历列表时不想更改它。这将遍历列表并打印每个num字段。

void print(struct ll *node) {
    while (node) {
        printf("%d\n", node->num);
        node = node->next;
    }
}

main() {
    /* code to assign head pointer some memory */
    print(head);
}