设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的结点。

#include 
using namespace std;

typedef int ElemType;
typedef struct LNode
{
    ElemType data;        //结点的数据域
    struct LNode *next;   //结点的指针域
}LNode,*LinkList;         //LinkList为指向结构体LNode的指针类型

//创建单链表前插法
void CreateList(LinkList &L,int n)
{
    L = new LNode;
    L->next = NULL;
    cout << "请输入列表中元素:";

    for(int i=0;i<n;i++)
    {
        LNode *p;
        p = new LNode;     //生成新结点
        cin >> p->data;    //输入元素赋给新结点的数据域
        p->next = L->next;
        L->next = p;       //将新结点插入到头结点之后
    }
}

//求最大值
void MaxElem(LinkList &L)
{
    LNode *p = L->next;
    int maxElem = p->data;

    while(p != NULL)
    {
        if(p->data > maxElem)
            maxElem = p->data;
        p = p->next;
    }
    cout << "最大结点为:" << maxElem << endl;
}

int main()
{
    int n;
    LNode *L;
    cout << "请输入链表的长度:";
    cin >> n;

    CreateList(L,n);
    MaxElem(L);

    return 0;
}

你可能感兴趣的:(课程复习,数据结构,链表,算法)