算法:
int maxLinkNode(LinkNode L,int max){
if(L==NULL) //结束标志,如果L指向的当前结点为NULL,则返回最大值max
return max;
if(L->data>max){ //如果当前结点的整数大于max
max=L->data; //就将当前结点的整数赋值给max
return maxLinkNode(L->next,max);
/*调用自身,并传入下一个结点的地址和当前最大值,进行递归*/
}else{
return maxLinkNode(L->next, max);
/*如果当前结点的值不大于Max,调用自身,并传入下一个结点的地址和当前最大值,进行递归*/
}
}
测试:
#include<stdio.h>
typedef struct Node{
int data;
struct Node *next;
}Node,*LinkNode;
int maxLinkNode(LinkNode L,int max);
int main(){
LinkNode L;
L=(LinkNode)malloc(sizeof(Node));
L->next=NULL;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
LinkNode p;
p=(LinkNode)malloc(sizeof(Node));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
int max=-3333;
max=maxLinkNode(L->next,max);
printf("%d",max);
}
int maxLinkNode(LinkNode L,int max){
if(L==NULL)
return max;
if(L->data>max){
max=L->data;
return maxLinkNode(L->next,max);
}else{
return maxLinkNode(L->next, max);
}
}