Dodawanie elementów do listy jednokierunkowej

0

Witam, otóż mam za zadanie napisać pewien program, który używa listy jednokierunkowej. Do listy mają być dodawane kolejne "węzły", dopóki nie zostanie podane 0 jako element. W tym momencie program ma przestać tworzyć dalej węzły i ostatnim z nich ma być ten z inną daną niż 0. Podam to co napisałem do tej pory. Niestety, żaden pomysł nie przychodzi mi do głowy, więc prosiłbym o wskazówki/porady, a jeśli trzeba wytłumaczenie co robię źle. Głównie sprawia mi problem ustalenie jaka pętla będzie najlepsza, a właściwie jej warunek logiczny. Mam też wrażenie, że robię coś nie tak ze wskaźnikami.

#include <iostream>

struct para
{
    int liczba;
    char litera;
    para* Next;
};

para* head=NULL;

void DodajElement();

int main()
{
    void DodajElement();

    return 0;
}

void DodajElement()
{
    int temp;
    while(cin >> temp!=0)
    {
        cin >> para->litera;
        para->liczba=temp;
        Next=NULL;
    }
}
0
#include <iostream>

class List
{
    struct Node
    {
        Node( int p_value ) : value( p_value ), next( 0 ) {}
        int value;
        Node * next;
    };

public:
    List() : head( 0 ), tail( 0 ) {}
    ~List();

    void append( int value );
    void pop();
    void clear();

private:
    List( const List & list ) {}
    List & operator=(const List & list) { return *this; }

private:
    Node * head;
    Node * tail;
};

List::~List()
{
    clear();
}

void List::append( int value )
{
    Node * curr_node = new Node( value );

    if ( !head ) {
        head = curr_node;
    }
    else if ( !tail ) {
        tail = curr_node;
        head->next = tail;
    }
    else {
        tail->next = curr_node;
        tail = curr_node;
    }
}

void List::pop()
{
    Node * curr_node = head->next;
    delete head;
    head = curr_node;
}

void List::clear()
{
    while ( head ) {
        pop();
    }
}

int main()
{
    List nums;

    nums.append( 1 );
    nums.append( 2 );
    nums.append( 3 );

    return 0;
}

Tu masz uproszczona lista. Gdybyś miał jakieś pytania wobec kodu po prostu pisz.

0

Po przeanalizowaniu kodu postanowiłem, że póki co nie będę pakował wszystkiego w klasę i postaram się to zrobić (moim zdaniem) prościej.
Zmieniłem sobie nazwę "head" na "początek". Oto kod, który napisałem. Proszę o sprawdzenie.
Program miał wczytywać węzły złożone z liczb i litery, póki nie dostanie 0. Potem posortować węzły by były w kolejności wg. liczb (jeśli liczby takie same to liter), wyświetlić listę, a potem ją skasować. Dzięki.

// Edit: rozwiązałem już swój problem, także dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0