查找链表中的最大值

利用单链表表示一个整数序列,通过一趟遍历在单链表中确定值最大的结点。

多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。

对于每组数据分别输出一行,输出每个链表的最大值。

 

 
5
2 1 3 5 4
6
2 3 10 4 5 1
0
5
10


思路:函数:创建链表,最大值(循环)

#include<iostream>
using namespace std;

typedef struct LNode
{
  int data;//数据域
  LNode *next;//指针域
}*LinkList;

void Create(LinkList &L,int n)//后插法创建链表
{
  L=new LNode;
  L->next=NULL;

  LinkList p,r=L;

for(int i=0;i<n;i++)
{
  p=new LNode;

  p->next=NULL;
  r->next=p;

  cin>>p->data;

  r=p;//尾指针移动到p
}

void Max(LinkList &L)
{
  LinkList p=L->next;
  int MAX=p->data;

  while(p->next)
  {
    if(p->next->data > MAX)
      MAX=p->next->data;//后一个比MAX大就将后一个的值赋予MAX 
    p=p->next;
  }
  cout<<MAX<<endl;
}

int main()
{
  LinkList L;

  int n=0;

  while(1)
  {
    cin>>n;//输入数据个数
  
    if(n==0)
      break;//如果输入为0结束

    Create(L,n);
    Max(L);
  }

  return 0;
}

 

①MAX还有其他写法

void Max(LinkList &L)
{
  LinkList p=L->next,pmax=L->next;

  while(p)
  {
    if(p->data > pmax->data)
    pmax=p;    
    p=p->next;
  }
  cout<<pmax->data<<endl;
}

posted @ 2018-10-18 00:01  马甲全都掉了  阅读(3600)  评论(0编辑  收藏  举报