Lista Obiektow

0

Witam
Mam niewielki problemik mianowicie mam do napisania program który ma stworzyć listę obiektów (każdy obiekt zawiera imie i nr osoby). Przy kompilacji nie wykrywa błędów niestety gdy chcę zakończyć dodawanie to Visual Studio wywala mi "break", tak jakby moja ostatnia pętla nie działała poprawnie. Czy ma ktoś pomysł co zrobiłem źle ?
Pozdrawiam

#include "stdafx.h"


#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

class osoba{
public:
    int numer;
    string imie;

    osoba(){
    imie="";
    numer=0;
    }

    osoba(string x, int y){
        imie = x;
        numer = y;
    }
};


typedef struct lista{
        osoba key;
        struct lista*next,*prev;}listaD;


void wstaw(listaD **head,osoba x){
     listaD*nowy= new listaD;
     nowy->key=x;
     nowy->next=*head;
     nowy->prev=NULL;
     if(*head)(*head)->prev=nowy;
     *head=nowy;
}

void show(listaD *head){
    osoba ktos;
    
    while(head){
        ktos = head -> key;

        cout << ktos.imie << " " << ktos.numer << endl;
        if(head->next)
        head = head -> next;
        }
}


int main(void){
    listaD *head = new listaD;
    char pyt = 'n';
    int y;
    string x;
    osoba ktos;

    do{
        cout << "Podaj imie: ";
        cin >> x;
        cout << "\nPodaj numer: ";
        cin >> y;
        cout << endl;
        ktos = osoba(x,y);
        wstaw(&head,ktos);

        cout << "Czy chcesz dodac kolejna osobe? t/n ";
        cin >> pyt;
        cout << endl;
    }while(pyt == 't');

    show(head);

    getchar();
    getchar();
    return 0;
}
0

A skąd program ma wiedzieć że to już koniec listy? Musisz to jakoś specjalnie zaznaczyć, i zakończyć tym while-a (ew dać ilość elementów do zmiennej potem while (ilość--))

0

Wywal ten wiersz:
if(head->next)

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