Cześć wszystkim, mam prośbę o pomoc w zrozumieniu kolejki dwukierunkowej. Znalazł by się ktoś kto wyjaśnił mi co i dlaczego dzieje się w linijkach zakończonych "//???"?
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<string.h>
using namespace std;
int ile, a, b, i;
char str[10];
struct bib { //deklaracja struktury
int wiek;
char imie[20];
char nazwisko[20];
struct bib*next; //wskaznik na nastepny element
struct bib*prev; //wskaznik na poprzedni element
};
int main() {
int x;
struct bib*z = new bib; //tworzy nowy obiekt struktury
z->prev = NULL; //ustawiamy wskaznik
z->wiek = 1;
strcpy(z->imie, "imie1");
strcpy(z->nazwisko, "nazwisko1");
z->next = new bib; // dodajemy kolejny obiekt do struktury
z->next->prev = z; //???
z = z->next; //???
z->wiek = 2;
strcpy(z->imie, "imie2");
strcpy(z->nazwisko, "nazwisko2");
z->next = new bib;
z->next->prev = z;
z = z->next;
z->wiek = 3;
strcpy(z->imie, "imie3");
strcpy(z->nazwisko, "nazwisko3");
z->next = new bib;
z->next->prev = z;
z = z->next;
z = z->prev; //???
z->next = NULL; //???
for (;;) {
while (z->prev != NULL) //???
{
z = z->prev; //???
}
printf("co chcesz zrobić? 1-doda 2-wybierz 3- wszystkie\n");
scanf("%d", &a);
if (a == 1) {
while (z->next != NULL) //???
{
z = z->next; //???
}
z->next = new bib;
z->next->prev = z;
z = z->next;
printf("wiek?");
scanf("%d", &b);
z->wiek = b; //???
printf("imie?");
scanf("%s", &str);
strcpy(z->imie, str);
printf("nazwisko?");
scanf("%s", &str);
strcpy(z->nazwisko, str);
z->next = new bib; //???
z->next->prev = z; //???
z->next = NULL; //???
};
if (a == 2) {
printf("kóry?\n");
scanf("%d", &b);
printf("\n");
while (z->prev != NULL) { //???
{
z = z->prev; //???
}
}
for (i=0;i<b-1;i++) {
z = z->next; //???
}
cout << z->wiek << endl;
cout << z->imie << endl;
cout << z->nazwisko << endl;
printf("\n");
printf("\n");
}
if (a == 3) {
while (z->next != NULL) //???
{
cout << z->wiek << endl;
cout << z->imie << endl;
cout << z->nazwisko << endl;
z = z->next; //???
}
cout << z->wiek << endl;
cout << z->imie << endl;
cout << z->nazwisko << endl;
}
if (a == 4) {
break;
}
}
getch();
return 0;
}