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()中执行此操作?,因为它是递归。
答案 0 :(得分: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;
}