第三章:栈与队列算法设计题(10)

#include 
#include <string.h>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define Status int
/*
以递归算法求单链表中的
1.最大数;
2.结点个数;
*/
typedef struct
{
    int number;
}ElemType;
typedef struct LNode{
    ElemType e;
    LNode *next;
}LNode,*LinkList;
LinkList L;

void MAX(LinkList L,ElemType &max)
{
    LinkList p = L;
    if(p->e.number > max.number ) max = p->e;
    if(p->next) MAX(p->next,max);
}
void Jie(LinkList L,int &num)
{
    LinkList p = L;
    if(p) num++;
    if(p->next) Jie(p->next,num);
}
int main()
{
    //为简化过程,这里直接将链表结构打出;
    L = new LNode;
    L->e.number = 12;
    L->next = new LNode;L->next->next=NULL;
    L->next->e.number = 6;
    L->next->next= NULL;

    ElemType max;max.number = -1;
    MAX(L,max);//求出链表中最大值!
    printf("MAX 等于 : %d \n",max.number);

    int num=0;
    Jie(L,num);printf("结点个数为:  %d \n",num);

    return 0;
}

 

你可能感兴趣的:(第三章:栈与队列算法设计题(10))