gpt4 book ai didi

c - list 反印

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:45 25 4
gpt4 key购买 nike

列表的每个节点都包含数据以及连续 节点的地址。这就是递归运行良好的原因,如下例所示:它接受一个输入,例如 123456,然后将其打印为列表 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 空值。

/* Structure types ----------------------------------------------*/

typedef int data;
struct list_element {
int data;
struct list_element *next;
};
typedef struct list_element ELEM;
typedef ELEM *LINK;


/* Recursive list create and list print---------------*/

LINK create_list(int n) {
if (n == 0) {
return NULL;
}
else {
LINK head = (LINK) malloc(sizeof(ELEM));
head -> data = n % 10;
head -> next = create_list(n / 10);
return head;
}
}

void print_list(LINK head) {
if(head == NULL)
printf("NULL\n");
else {
printf("%d -> ", head -> data);
print_list(head -> next);
}
}

/* MAIN ---------------------------------------------------------*/

int main(int argc, char *argv[]) {
int n; LINK ls;
printf("\nType an integer:\n");
scanf("%d", &n);
ls = create_list(n);
print_list(ls);
return 0;
}

节点不保存其邻居的地址。从这个考虑问题:

如何从它的最后节点打印一个列表,以便 NULL -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 ?

Reversing a linkedlist recursively in c 问题的答案实际上指向了一个稍微不同的问题。他们的目标是扭转名单本身。我不打算更改列表中数据的顺序。

最佳答案

您可以通过更改打印调用的顺序来简单地做到这一点。如果先打印列表的其余部分,则顺序将颠倒。

print_list(head -> next);
printf("%d -> ", head -> data);

这实际上是您如何浏览列表的问题。

关于c - list 反印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44540103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com