Proste zadanie ze wskaźnikami

0

Witam. Od kilku dni męczę się z prostym zadankiem, które musze wykonać na poniedziałek. Niestety słabo ogarniam wskaźniki i się w nich gubię, a akurat te konkretne zadanie nie należy do zbyt prostych wg mnie. Prosiłbym o jakąkolwiek pomoc. Z góry dziękuję :)

Utwórz cztery zmienne typu wskaźnikowego o nazwach p1, p2, p3, p4, będące częścią struktury. Połącz je w cykl, tak aby pierwszy z wskaźników pokazywał strukturę z drugim, . . . , a ostatni strukturę z pierwszym. Następnie napisz i wywołaj funkcję rekurencyjną wyświetlającą wszystkie wskaźniki cyklu. Załóż, że funkcja przyjmie jako parametry dwie zmienne typu wskaźnikowego, z których pierwsza wskazuje na początek cyklu, a druga element cyklu.

0

Dział Praca + 100 złotych = zadanie OK

1

100 zł za kilkanaście linii kodu; dobre ;]

0

Skoro nie stać cię, to sam sobie napisz :P

0

Wskażniki typu strukturowego to znaczy wskażniki utworzone w struct? (klasa która domiemanie ma wszystko public)?

Cylu nie rozumiem :D

3

nieogarnięty pokaż co już zrobiłeś...Dokładnie określ jakiej pomocy oczekujesz... Jeśli to czekanie na gotowe rozwiązanie, wątke za chwilę trafi do kosza!

0

Stary, najpierw napisz poprawnie treść zadania, bo to co napisałeś jest bez sensu.


struct struktura {
    struct struktura *p1;
    struct struktura *p2;
    struct struktura *p3;
    struct struktura *p4;
};

int main(int argc, char* argv[]) {

    struktura str;

    str.p1=str.p2;
    str.p2=str.p3;
    str.p3=str.p4;
    str.p4=str.p1;

    return 0;
}

?

0

Mam identyczne zadanie . Ja zrozumiałem żeby zrobić to tak :

 #include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct Struktura{
    struct Struktura* next;
};
void wypisz(struct Struktura *src1,struct Struktura *src2){
while(src1!=src2){
    cout<<src1<<endl;
    src1=src1->next;
}
cout<<src1<<endl;
}
int main ( ) {
struct Struktura *p1,*p2,*p3,*p4;
p1 = (struct Struktura*) malloc(sizeof(struct Struktura));
p2 = (struct Struktura*) malloc(sizeof(struct Struktura));
p3 = (struct Struktura*) malloc(sizeof(struct Struktura));
p4 = (struct Struktura*) malloc(sizeof(struct Struktura));
p1->next=p2;
p2->next=p3;
p3->next=p4;
p4->next=p1;
cout<<p1<<endl;
cout<<p2<<endl;
cout<<p3<<endl;
wypisz(p1,p3);
return 0 ;
}

Tylko nie wiem czy to jest poprawne rozwiązanie ponieważ treść zadania jest jak dla mnie napisana niezrozumiale.
Prosiłbym kogoś o wypowiedzenie się czy to rozwiązanie będzie właściwe.
Pozdrawiam

0

Wywoływać w main musisz wypisz(p1,p1); lub wypisz(p2,p2); lub wypisz(p3,p3); lub wypisz(p4,p4);
Funkcja wg zadania ma być rekurencyjna.

0
 #include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct Struktura{
    struct Struktura* next;
};
void wypisz(struct Struktura *src1,struct Struktura *src2){
cout<<src1<<" przechodzi na "<<src1->next<<endl;
src1=src1->next;
if(src1!=src2){
wypisz(src1,src2);
}
}
int main ( ) {
struct Struktura *p1,*p2,*p3,*p4;
p1 = (struct Struktura*) malloc(sizeof(struct Struktura));
p2 = (struct Struktura*) malloc(sizeof(struct Struktura));
p3 = (struct Struktura*) malloc(sizeof(struct Struktura));
p4 = (struct Struktura*) malloc(sizeof(struct Struktura));
p1->next=p2;
p2->next=p3;
p3->next=p4;
p4->next=p1;
wypisz(p1,p1);
return 0 ;
}

Czy teraz jest ok ?

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