【问题标题】:Reverse single linked list using recursion [duplicate]使用递归反转单链表[重复]
【发布时间】:2018-12-03 17:23:19
【问题描述】:
struct node{
    int i;
    struct node* link;
};
struct node* head;
void reverse(struct node* prev, struct node* cur){
    if(cur){
        reverse(cur,cur->link);
        cur->link = prev;
    }
    else
        head = prev;
}
void main(){
    reverse(NULL,head);
}

在上面的代码中,如何将数据(作为输入的数字列表)插入 SLL?,以便我了解在给出输入时元素是如何反转的,通过显示它,以及我应该写什么代码在 main() 中这样做?,因为它是递归。

【问题讨论】:

  • for (i = 0, list = head; list != NULL; i++, list = list->next) list->i = i;
  • 您创建了 SLL create_sll() 吗?

标签: c singly-linked-list


【解决方案1】:

使用给定的声明,此代码将构建一个用于测试的小列表,调用函数,然后打印结果列表:

int main(void)
{
  struct node a, b, c, d;
  a.i = 1;
  a.link = &b;
  b.i = 2;
  b.link = &c;
  c.i = 3;
  c.link = &d;
  d.i = 4;
  d.link = NULL;

  reverse(NULL, &a);

  for (const struct node *iter = &a; iter != NULL; iter = iter->link)
    printf("%d\n", iter->i);

  return 0;
}

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2012-11-05
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多