关于在链表中用递归形式,求出链表中的最大值,及节点数和平均值的函数

//首先在头文件中加入以下这些函数,在使用下列函数时,都不能直接使用下列函数,而是要借助一些其它函数,所以可以把这些函数当做私有函数成员
//在头文件中在增加三个函数分别来处理一下几个函数,下面这三个函数必须是公有函数成员

void PrintMaxData()
{
    //谁调用函数,这个head就是谁的
    LinkNode* str=head;
    T maxData=0;
    MaxData(maxData,str);
    cout<<"最大值"<* str=head;
    cout<<"节点数"<* str)函数时,要先定义一个最大值maxData=0;MaxData(maxData,ptr)即可
void MaxData(T data,LinkNode* str);

T Average();
T AddAllNumber(LinkNode* ptr);

int NodeNumber(LinkNode* str);
//在头文件中添加一下私有数据
T Data=0;
int nodeNumber;





//下面是上面的函数的实现

template

void List::MaxData(T data,LinkNode* str)
{
    if(str->link==NULL)
    {
        if(data>str->data)
           return data;
        else
        {
            data=str->data;
            return data;
        }
    }
    else
    {
        if(data>str->data)
        {
            return MaxData(data,str->link)
        }
        else
        {
            data=str->data;
            return MaxData(data,str->link);
        }
    }
}

//
template
T List::AddAllNumber(LinkNode* ptr)
{
    if(ptr->link==NULL)
    {
        return ptr->data;
    }
    else
    {
        Data=ptr->data;
        ptr=ptr->link;
        return Data+Average(ptr);
    }
}
template
T List::Average()
{
    //首先调用函数,得出所有链表中数据的和
    LinkNode* str=head;
    T value=AddAllNumber(str);
    //我在我以前的博客中的链表定义上写过返回链表长度的函数,所以就不在重复的写了,大家可以去以前的博客中看
    int count=ptr.Lnegth();
    T average=value/count;
    return average;
}

template
int List::NodeNumber(LinkNode* str)
{
    if(str->link==NULL)
    {
        return 1;
    }
    else
    {
        return 1+NodeNumber(str->link);
    }
}

展开阅读全文

没有更多推荐了,返回首页