列表的最大元素

时间:2015-04-17 19:36:48

标签: c++ struct

我需要找到列表中最大的元素。在以下代码中取消订阅项目并对其进行排序。如何找到列表的最后一个元素?我认为我需要再添加一个函数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;
}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

确定。你是对的,但我认为我的代码显示了我的工作。没关系:)

我解决了我的问题。我的功能:^^

    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;
    }
}