c - 使用递归反向单链表
问题描述
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( ) 这样做?,因为它是递归的。
解决方案
使用给定的声明,此代码将构建一个用于测试的小列表,调用函数,然后打印结果列表:
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;
}
推荐阅读
- r - 如何连接多行的长标签
- python - 如果不是 NAN,则用以前的值替换 Pandas 中的缺失值
- javascript - 无法通过 onClick 传递参数
- sql - SQL 代理作业创建错误:作业“XXX”已针对服务器“YYY”
- mysql - Mysql - 每小时总和时差和组
- r - 如何比较 R 中两个数据集的 POSIX 日期时间
- excel - 如何在取消输入框中退出子
- post - 如何使用openge requestBuilder同时使用param和json有效负载制作http帖子
- ios - 在 Swift 2.0 中隐藏 Home 指示器
- reactjs - 检查用户打开网站时是否登录的最佳方法