Добавление узлов в односвязный список с использованием oop - PullRequest
0 голосов
/ 26 января 2020

У меня есть задание, где мне нужно работать с односвязным списком, используя oop. Я застрял в основном на функции sortedInsert . Я предполагаю, что это будет ошибкой при использовании указателей, но я не могу понять это. И программа аварийно завершает работу после ввода пользовательского ввода в функцию for l oop в initializeList , возможно, из-за функции sortedInsert , но, возможно, это что-то другое. Может ли кто-нибудь помочь мне выяснить, где я это получаю?

Вот код:

#include <iostream>

    using namespace std;

class Item{
    private:
        int m_value;
        Item* m_next;

public:
    Item(int val){
        m_value = val;
        m_next = NULL;
    };
    int getValue(){ return this->m_value; };
    Item* getNext()  { return this->m_next; };
    void setValue(int val){ m_value = val; };
    void setNext(Item* nxt){ m_next = nxt; };
};

class IntList{
    private:
        Item* m_front = NULL;
        Item* m_end;
        int m_size = 0;
        void bump_up(int m_size){ m_size++; };
        void bump_down(int m_size){ m_size--; };
    public:
        IntList(){ m_front = NULL; };
        Item* getFirst(){ return this->m_front; };
        //int getValueFirst(){ return this->firstItem->getValue(); };
        ~IntList();

        void sortedInsert(Item* first, int val){
            Item* newItem = new Item(val);
            Item* current;
            if(first == NULL || (first)->getValue() >= newItem->getValue()){
                newItem->setNext(first);
                first = newItem;
            }
            else{
                current = first;
                while(current->getNext() != NULL && current->getNext()->getValue() < newItem->getValue()){
                    current = current->getNext();
                }
                newItem->setNext(current->getNext());
                current->setNext(newItem);
            }
            bump_up(m_size);
        }

        //print
        void display(){
            Item* p = m_front;
            cout << "(" << m_size << ")";
            while(p != NULL){
                cout << p->getValue() << " ";
                p = p->getNext();
            }
            cout << endl;
        }

void initializeList(IntList* list){
    int x, i;
    cout << "Insert list size: ";
    cin >> x;
    cout << "Insert " << x << " numbers, which will be put in the list:";
    for(i = 0; i <= x; i++){
        int a;
        cin >> a;
        list->sortedInsert(list->getFirst(), a);
    }
    //cout << endl;
}

int main()
{
    IntList* list = new IntList();
    initializeList(list);
    list->display();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...