2021-11-07 递归算法输出循环单链表各个节点

【问题描述】遍历输出带头结点的循环单链表的所有结点,要求使用递归算法(注意:递归算法)

【输入形式】
【输出形式】
【样例输入】5

                    15 16 17 18 19
【样例输出】15 16 17 18 19
【样例说明】链表长度为5

【运行结果如下】

【代码如下】

#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int ElemType;


/*线性表的单链表存储结构 */ 
typedef struct LNode{
	ElemType       data;	
	struct LNode  *next;
}LNode,*LinkList;

/*初始化循环单链表*/
void InitList_L(LinkList &L,int n)
{
	int i;
	LinkList p,pre;
	L = (LinkList)malloc(sizeof(LNode));
	pre = L;			  //当前指针 
	for (i=0; i<n; i++){
		p = (LinkList)malloc(sizeof(LNode));
		scanf("%d",&p->data);	
		pre->next = p; 
		p->next = NULL;
		pre = pre->next;  //当前指针后移	
	}
	pre->next = L; 	      //完成循环链表 
}

/*递归输出*/
void recursion_L(LinkList &L,LinkList &pre)
{
	if (L == pre){
		return;			  		//终止递归 
	}else {
		printf("%d ",pre->data); 
		recursion_L(L,pre->next);	//p指向下一个结点 
	}
}

int main()
{	
	LinkList L;	
	int n;
	scanf("%d",&n);
	InitList_L(L,n);   
	recursion_L(L,L->next);  
	return 0;
}

本文章仅供学习和参考!

欢迎交流~

Guess you like

Origin blog.csdn.net/m0_58489132/article/details/121189296