打印链表通常会有两种方法,迭代和递归。
这里我们学习使用递归打印链表
struct Node
{
int data;
struct Node* next;
};
struct Node*head;
void print(struct Node* p)
{
if(p==NULL)
{
return;
}
/*1*/printf("%d",p->data);
/*2*/print(p->next);//头结点向后移动
}
正序输出
如果把1,2换一下这个时候就会逆序输出。
struct Node
{
int data;
struct Node* next;
};
struct Node*head;
void print(struct Node* p)
{
if(p==NULL)
{
return;
}
print(p->next);//头结点向后移动
printf("%d",p->data);
}
同时需要知道一点,当链表正序输出时最好使用循环迭代,用递归的代价是很大的。
总结:
当正序输出链表时,循环迭代就可以了;
当逆序输出链表时,递归是很不错的选择。