(6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。
/*
(6)设计 一 个算法,通过 一 趟遍历确定长度为 n 的单链表中值最大的结点。
*/
#include <stdio.h>
#include <iostream>
#define LENGTH 5
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
void CreatList_R(LinkList &L, int n)
{
L = new LNode;
L->next = NULL;
LNode *r = L;
for (int i = 0; i < n; i++)
{
LNode *p = new LNode;
printf("data%d:", i + 1);
std::cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
void ShowList(LinkList L)
{
LNode *p = L->next;
while (p)
{
printf("%d\t", p->data);
p = p->next;
}
printf("\n");
}
LNode *GetMaxNode(LinkList L)
{
LNode *p = L->next; // 指向首元结点
LNode *aim = L->next;
while (p)
{
if (aim->data < p->data)
{
aim = p;
p = p->next;
}
else
p = p->next;
}
return aim;
}
int main(void)
{
LinkList L;
CreatList_R(L, LENGTH);
printf("L:");
ShowList(L);
LNode *MaxNode = GetMaxNode(L);
printf("最大的结点值为:%d\n", MaxNode->data);
delete L;
return 0;
}
运行结果: