思想:
定义一个指针p,使其指向链表的首原结点,在递归过程中p不断指向后继结点,指导p为空结束递归。
算法步骤:
1.如果p为null,递归结束返回;
2.否则输出p->data,p指向后继jied结点继续递归。
#include<stdio.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
bool InitLinkList(LinkList &L){
L=new LNode;
L->next=NULL;
return true;
}
//头插法创建单链表
void CreateLinkList_H(LinkList &L, int n){
printf("请以此输入链表各个元素的值:\n");
for(int i=0;i<n;i++){
printf("输入第%d个元素节点的值:", (i+1));
struct LNode *s;
s=new LNode;
scanf("%d", &s->data);
//s->data=e;
s->next=L->next;
L->next=s;
}
}
//递归遍历链表结点,因为这里定义的链表带有一个头结点,
//这种写法会输出头结点的地址
void TraveLinkListDiGui(LinkList L) {
struct LNode *p;
p=L;
if(p!=NULL){
printf("%d ", p->data);
TraveLinkListDiGui(p->next);
}
}
void TraveLinkLi