2015-04-17 3 views
-2

Мне нужно найти самый большой элемент в списке. В следующем коде отменили подписку на предметы и заказали их. Как найти последний элемент списка? Я думаю, что мне нужно добавить еще одну функцию void maksimum(), но у меня возникли проблемы с этим.Самый большой элемент списка

#include <iostream> 
#include <string> 
#include <time.h> 
#include <conio.h> 
#include <cstdlib> 

using namespace std; 

struct element 
{ 
    int number; 
    element* next; 
    element(); 
}; 

element::element() 
{ 
    next = NULL; 
} 

struct list 
{ 
    element* first; 
    void fill_list(int number); 
    void segregate(); 
    void show_list(); 
    void maksimum(); 
    list(); 
}; 

list::list() 
{ 
    first = NULL; 
} 

void list::fill_list(int number) 
{ 
    element *nowy = new element; 
    nowy->number = number; 

    if(first == 0) 
    { 
     first = nowy; 
    } 
    else 
    { 
     element* temp = first; 
     while(temp->next) 
     { 
      temp = temp->next; 
     } 
     temp->next = nowy; 
    } 
} 

void list::show_list() 
{ 
    element* temp = first; 
    if(temp == 0) 
    { 
     cout << "List is empty." << endl; 
     cout << "No smallest element " << endl; 
     cout << "No largest element" << endl; 
    } 
    else 
    { 
     while(temp) 
     { 
      cout << temp->number << endl; 
      temp = temp->next; 
     } 
     cout << "the smallest element: : " << first->number << endl; 
     if(first->next == 0) 
     { 
      cout << "Largest element = Smallest element :)" << endl; 
     } 
    } 
} 

void list::segregate() 
{ 
    element* new_first = NULL; 
    element* prv; 
    element* temp; 
    element* maks; 

    while(first) 
    { 
     maks = first; 
     prv = NULL; 
     temp = first; 

     while(temp->next) 
     { 
      if(temp->next->number > maks->number) 
      { 
       prv = temp; 
       maks = temp->next; 
      } 
      temp=temp->next; 
     } 

     if (prv) 
     { 
      prv->next = maks->next; 
     } 
     else 
     { 
      first = maks->next; 
     } 
     maks->next = new_first; 
     new_first = maks; 
    } 
    first = new_first; 
} 


int main() 
{ 
    int n=0; 
    int number=0; 
    list* base = new list; 
    cout << "Size of list: " << endl; 
    cin >> n; 
    for(int i = 0; i < n; i++) 
    { 
     cout << "No " << i+1 << ": "; 
     cin >> number; 
     base->fill_list(number); 
    } 
    base->segregate(); 
    base->show_list(); 
    //base->maksimum(); 
    delete(base); 
    return 0; 
} 

Как я могу это сделать?

+0

Я думаю, что было бы лучше, если у вас возникнет вопрос. Вы говорите, что у вас были проблемы с поиском самого большого, но вы также должны объяснить, что вы пробовали, и то, что вы застряли. – folkol

+0

ответ ниже: – Anim

ответ

0

ok. вы правы, но я думал, что мой код показывает мою работу. не важно :)

Я решил свою проблему. Моя функция: ^^

void list::show_list() 
{ 
    element * temp = first; 
    if(temp == 0) 
    { 
     cout << "List is empty." << endl; 
     cout << "No smallest element " << endl; 
     cout << "No largest element" << endl; 
    } 
    else 
    { 
     while(temp->next != 0) 
     { 
      temp = temp->next; 
     } 
     cout << "The largest element: " << temp->number << endl; 
     cout << "The smallest element: " << first->number << endl; 
    } 
} 
Смежные вопросы