Kezdőoldal » Számítástechnika » Programozás » C láncolt lista párcsere,...

C láncolt lista párcsere, mégis hogy?

Figyelt kérdés

Az a problémám adódott, hogy van egy láncolt listám, amibe szeretném az alábbi módon felcserélni a listaelemeket az adatok másolása nélkül( újraláncolással), ( egyszeresen láncolt).

1->3->5 akkor 3->1->5

de ha páros számú adat van benne akkor 1->3->5->7 , 3->1->7->5

Igazából nem lenne vele probléma, de a return void és csak a struct Node* headet kapom meg paraméterlistán.

Igazából egy régebbi zh példa ( ELTE-n tanulók programozó informatikusnak)

Kódot nem tudok küldeni mivel teljesen nem tudom elkezdeni, ha így kapom meg, ha esetleg struct Node **head-et kapnám meg semmi baj nem lenne.

Köszi előre is a válaszokat!



#C, ELTE, PROGRAMOZÁS #linked list #Reverse pairs
2020. nov. 13. 20:59
1 2 3
 11/26 A kérdező kommentje:
Mindig csak parosaval kene cserelgetnem tehat haromnal az utolsot nem, de negynek viszont mindent etc..
2020. nov. 14. 08:58
 12/26 anonim ***** válasza:
2020. nov. 14. 09:14
Hasznos számodra ez a válasz?
 13/26 anonim ***** válasza:
31%

Rendben, akkor páros csere. Nem túl logikus de a példa alapján én arra gondoltam, hogy tükrözni kell a lista két szélét. :D


Ha csak node* head-et kapsz, akkor nem elég az átláncolás. Mindenképpen a head* alatt kell hogy legyen az első elem, itt másolással kell cserélned. A többi csere lehet sima átláncolás.

2020. nov. 14. 10:41
Hasznos számodra ez a válasz?
 14/26 A kérdező kommentje:

Igen kicsit csálén fogalmaztam :D

Esetleg egy peszukódot tudnál írni, teljesen tanácstalan vagyok.. :/

2020. nov. 14. 10:54
 15/26 anonim ***** válasza:
29%

működő c kód

nem húztam az időmet malloc al szóval az egész lista stack en van


[link]


3 lényeges fv. van:

flip_next_two(node* curr) - láncolással megcseréli curr->next és cur->next->next et

flip_all(node* ptr) - az előző fv. futtatja le a ptr utáni párokra. Azért a végétől visszafelé, hogy a cserék ne zavarjanak be

swap_data(node* a, node* b) - ezzel cseréltem le az első két elemet, pointereket nem változtat csak adatot cserél

2020. nov. 14. 11:20
Hasznos számodra ez a válasz?
 16/26 anonim ***** válasza:

ezt kell hogy produkálja:

1, 2, 3, 4, 5,

2, 1, 4, 3, 5,

2020. nov. 14. 11:24
Hasznos számodra ez a válasz?
 17/26 anonim ***** válasza:
Kérdező megnézted egyáltalán amit linkelt pl a 12-es? Ott a konkrét megoldás magyarázattal.
2020. nov. 14. 11:36
Hasznos számodra ez a válasz?
 18/26 anonim ***** válasza:
#17 ha jól értettem az a problémája, hogy void fv. kell írnia és csak node* -ot kap
2020. nov. 14. 11:54
Hasznos számodra ez a válasz?
 19/26 anonim ***** válasza:
#18 Tehát a 12-eshez képest annyi a különbség, hogy nem kell visszaadni az új headet. Tehát töröl 2 sort a C++ megoldásból és kész.
2020. nov. 14. 11:59
Hasznos számodra ez a válasz?
 20/26 anonim ***** válasza:
Ráadásul ha lehet segédfüggvényt írni, nem csak az adott függvény implementációját, akkor simán lehet rekurzívan csinálni és megvan kb. 8 sorból az egész.
2020. nov. 14. 12:04
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!