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
 1/26 anonim ***** válasza:
79%
Pedig a *head elég kell hogy legyen. Az alapján végig tudsz szaladni a listán úgy, hogy kettesével eltárolod az elemek címét, csere, aztán mész tovább, amíg a következő két cím valamelyike nem NULL pointer.
2020. nov. 13. 22:13
Hasznos számodra ez a válasz?
 2/26 anonim ***** válasza:
72%
2020. nov. 13. 22:45
Hasznos számodra ez a válasz?
 3/26 A kérdező kommentje:
Ha jól értem akkor két pointerrel futok végig és őket felcserélem?
2020. nov. 13. 22:46
 4/26 A kérdező kommentje:
Ez azért nem jó mert ő csak a datákat másolja, nekem láncolással kéne lekódolnom :/
2020. nov. 13. 22:47
 5/26 anonim ***** válasza:
53%

Ja, hogy masolas nelkul akarod.

Akkor itt nezd az iterativ megoldast:

[link]

A dummy node neked nyilvan nem kell, mert nem adod vissza az uj headet.

2020. nov. 13. 22:52
Hasznos számodra ez a válasz?
 6/26 A kérdező kommentje:

void swapPairs(listelem *head) {

listelem *node;

while (head && head->next) {

listelem *nxt = head->next;

head->next = nxt->next;

nxt->next = head;

node->next = nxt;

node = head;

head = node->next;

}

}

Így, nem?

2020. nov. 13. 23:05
 7/26 A kérdező kommentje:

Mennek a zöldek közbe, hogy ilyenkor még segítesz nekem:D

Kicsit fáradt vagyok egy egész nap debug után.. D:

2020. nov. 13. 23:06
 8/26 anonim ***** válasza:
#1 voltam, igen, úgy értettem, hogy a pointerek variálásával. Kicsit leegyszerűsítettem, mert talán három pointert is kell kezelni a ciklusmagban, de a lényeg ugyanaz.
2020. nov. 14. 00:21
Hasznos számodra ez a válasz?
 9/26 anonim ***** válasza:
0%

helló!


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

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


itt mi az átrendezési logika? mi kell hogy történjen 5 vagy több elem esetén?

2020. nov. 14. 08:52
Hasznos számodra ez a válasz?
 10/26 anonim ***** válasza:
53%
#9 gondolom ugyanaz, ami 3 vagy 4 elem eseten. Megcsereled parosaval a nodeokat.
2020. nov. 14. 08:57
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!