1.数据结构是递归的
- 某些数据结构本身具有递归的特性,则它们的操作可递归地描述
- 例如,对于链表,其结点 LNode的定义由数据域data和指针域next组成,而指针域next是一种指向LNode类型的指针,即 LNode的定义中又用到了其自身,所以链表是一种递归的数据结构。
- 对于递归的数据结构,相应算法采用递归的方法来实现特别方便。
2.遍历输出链表中各个结点的递归算法
- 算法步骤
- ①如果p为NUL,递归结束返回。
- ②否则输出p>data,p指向后继结点继续递归。
- 算法描述
// 遍历输出链表中各个结点的递归算法
void TraveList(LinkList p)
{
if (p == NULL)
return; //递归终止
else
{
printf("%d ", p->data); // 输出当前结点的数据域
TraveList(p->next); // p指向后继指点继续递归
}
}
3.代码实现
- mian.cpp
#include<iostream>
using namespace std;
//单链表的存储结构
typedef struct LNode
{
int data;
struct LNode *next;
}LNode, *LinkList;
// 单链表的初始化
int InitList(LinkList &L)
{
//构造一个空的