单链表找最大值

简介: 单链表找最大值
//群:970353786
#include<iostream>
using namespace std;
typedef struct LNode    //定义结构
{
    int data;   //数据
    struct LNode* next;     //指针
}LNode, * LinkList;
void InitList(LinkList& L, int n)        //创建链表
{
    L = new LNode;      //分配内存
    L->next = NULL;     //处理指针域
    LinkList p = L;     //p指向尾结点
    while (n--)       //尾插法
    {
        LinkList q = new LNode;     //生成新结点        
        cin >> q->data;           //输入数据
        q->next = NULL;     //处理指针域
        p->next = q;          //将结点q插在结点p后面
        p = q;        //更新指针p,指向新的尾结点q
    }
}
int Max(LinkList L)           //L指向首元结点,递归求解最大值
{
    if (L->next == NULL)  //若下一个结点为空,则最大值就是本身
        return L->data;
    else
        return L->next->data > Max(L->next) ? L->next->data : Max(L->next);//两两比较找最大值1 2 5 4
}
int main()
{
    int n;
    cout << "请输入数据个数:";
    while (cin >> n && n !='n')//当n=0时输入结束。
    {
        LinkList L;           //定义LinkList类型的链表L
        cout << "请输入不同大小的数据:";
        InitList(L, n);       //创建链表L
       // cout << "最大值序号为:";
       // cout << next;
        cout << "最大值为:";
        cout << Max(L) << endl;     //递归求解最大值
    }
    return 0;
}
相关文章
【LeetCode】1171. 从链表中删去总和值为零的连续节点、面试题 02.05. 链表求和
目录 1171. 从链表中删去总和值为零的连续节点 面试题 02.05. 链表求和
52 0
|
7月前
|
算法
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
|
7月前
|
算法 程序员
【算法训练-链表 五】【链表求和】:链表相加(逆序)、链表相加II(顺序)
【算法训练-链表 五】【链表求和】:链表相加(逆序)、链表相加II(顺序)
111 0
|
C语言
代码实现求二叉树结点数和叶子结点数(C语言)
代码实现求二叉树结点数和叶子结点数(C语言)
576 0
代码实现求二叉树结点数和叶子结点数(C语言)
|
算法 C语言
C语言算法基础-在一个单链表中值为y的结点前面插入一个值为x的结点
题目:3.4设计一个算法,在一个单链表中值为y的结点前面插入一个值为x的结点。即使值为x的新结点成为值为y的结点的前驱结点。 题目来自李云清版《数据结构》
321 5
C语言算法基础-在一个单链表中值为y的结点前面插入一个值为x的结点
数据结构141-二叉搜索树-最大值和最小值
数据结构141-二叉搜索树-最大值和最小值
68 0
数据结构141-二叉搜索树-最大值和最小值
队列的最大值(剑指offer59-II)
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1
133 0