用递归求链表的最值元素

86 阅读1分钟
#include<iostream>
using namespace std;

//定义单链表,参考教材P30
typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode,*LinkList;

void output(LinkList L); //函数声明
int findMax(LinkList L); //函数声明

//单链表的初始化,参考教材P32
void InitList_L(LinkList &L)
{
	L=new LNode;
	L->next=NULL;
}

//尾插法创建单链表,参考教材P37--P38
void CreateList_L(LinkList L,int n)
{
	int i;
	LinkList p,r;
	r=L;
	//cout<<"请依次输入该表的各个元素:";
	for(i=0;i<n;i++)
	{
		p=new LNode;
		cin>>p->data;
		p->next=NULL;
		r->next=p;
		r=p;
	}
}
 
void output(LinkList L)
{
 LinkList p=L;
 while(p){
  printf("%d",p->data );
  if(p->next ) printf(",");
  p=p->next;
 }
}
int  findMax(LinkList L)
{
 int max;
 if(!L->next ) return L->data;
 else{
  max=findMax(L->next );
  return max>=L->data?max:L->data;
 }

 } 
int main(void)
{
	LinkList L;
	int n;
	cin>>n;
	InitList_L(L);			//链表L的初始化,新建头结点
	CreateList_L(L,n);	    //链表L的创建,依次往单链表L添加n个新结点
	output(L->next);
	cout<<endl;
	cout<<findMax(L->next)<<endl;
	return 0;
}
c++