查找鏈表中的最大值


利用單鏈表表示一個整數序列,通過一趟遍歷在單鏈表中確定值最大的結點。

多組數據,每組數據有兩行,第一行為鏈表的長度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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM