C láncolt lista párcsere, mégis hogy?
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!
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.
Igen kicsit csálén fogalmaztam :D
Esetleg egy peszukódot tudnál írni, teljesen tanácstalan vagyok.. :/
működő c kód
nem húztam az időmet malloc al szóval az egész lista stack en van
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
ezt kell hogy produkálja:
1, 2, 3, 4, 5,
2, 1, 4, 3, 5,
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!