gpt4 book ai didi

c - 打印列表 : 1 2 3 4 5 6 7 8 9 = 1 8 3 6 5 4 7 2 9

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:44 24 4
gpt4 key购买 nike

给定一个单链表,其节点包含一个 int 和 next 指针。

奇数位的数字从左到右打印:1 3 5 7 9 偶数位的数字从右到左打印:8 6 4 2

它们一起打印为:奇-偶-奇-偶..,因此函数打印的结果是:1 8 3 6 5 4 7 2 9

此函数必须递归完成,并且不能使用 C 语言中的数组或辅助列表。

    void print(Node *lista,int actual, int length){
if (actual<length)return;
if (actual&1){
printf("%d",lista->value);
print(lista->next,actual+1,length-2);
}else if(actual==length){
printf("%d",list->value);
print(list->next, actual+1, length);
}
print((lista->next)->next, actual+2, length);
}

这是我的尝试,是错误的。我已经迭代完成了,但我对递归的理解不够。不要关注语法,只关注想法..

(如果在不更改实际列表的情况下完成会更好,我的意思是,只按该顺序打印,目的不是更改列表,只是打印它)

最佳答案

在这里你必须考虑一些事情。我有一个示例程序,它适用于偶数个系列。 Here(ideone)是链接。

代码非常复杂,简单来说,您必须遵循以下步骤:

  1. You have to use a static int count=0; for this, when the count exceeds the limit then the recursion ends.

  2. You have to consider all the scenarios, and according this you have to write their calling function with position.

您可以查看该程序以获得一个想法。

你可以像这样递归。这只是递归逻辑的思想。

void print(Node *lista, int pos, int length)
{
static int count=0;
if(count>=length)
return;
count++;
//Place the if else conditions according to your position.
}

关于c - 打印列表 : 1 2 3 4 5 6 7 8 9 = 1 8 3 6 5 4 7 2 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242126/

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