Saistītā saraksta apgriešana (C++)

Saistita Saraksta Apgriesana C



Šajā LinuxHint apmācībā ir parādīts, kā mainīt saistīto sarakstu C++. Apgriežot saistīto sarakstu, saites ceļš tiek apgriezts, un galva kļūst par asti, bet aste kļūst par galvu. Mainot mezglu pozīcijas, mēs to varam ātri saprast. Šajā apmaiņā mēs vienkārši mainām mezglu pozīcijas no kreisās uz labo vai otrādi.

saistītais saraksts: Šis ir saistīts saraksts, kuru mēs vēlamies mainīt.







Pēc apgrieztā saistītā saraksta: Tālāk būs redzams rezultāts pēc iepriekš saistītā saraksta apvēršanas.





Iepriekš redzamajā diagrammas paraugā redzams, ka galvenais mezgls un aizmugures mezgls maina savas pozīcijas, kad mēs apgriežam saistīto sarakstu. Galvenais mezgls, kas tagad ir astes mezgls, norāda uz nulles mezglu, jo tagad tas ir astes mezgls.





Algoritma soļi

  1. Mēs izveidojam galveno metodi un deklarējam dažus nepieciešamos mainīgos.
  2. Pēc tam mūsu nākamais solis ir izveidot metodi, kas var izveidot saistīto sarakstu. Šī metode palīdz mums izveidot saistīto sarakstu.
  3. Nākamais solis ir izveidot metodi saistītā saraksta apvēršanai. Izmantojot šo metodi, tiek nodots viss saistītais saraksts, un šī metode apvērsīs saistīto sarakstu.
  4. Tagad mums ir nepieciešama cita metode, lai parādītu rezultātu pēc tā maiņas.
  5. Visas šīs iepriekš minētās metodes apvienosim mūsu galvenajā metodē.

Mēs izskaidrosim apgriezto saistīto sarakstu, izmantojot kādu attēla formu, lai to būtu vieglāk saprast. Tātad, sāksim ar piemēru.

Tālāk ir norādīts saistītais saraksts, kuru mēs vēlamies mainīt.



1. darbība . Zaļās krāsas mezgls ir galvenais mezgls, kas norāda uz pirmo startēšanas mezglu.

2. darbība. Nākamajā darbībā mēs šķērsosim visu saistīto sarakstu, līdz mēs nesaņemsim nulles rādītāju blakus galvenes mezglam. Šim nolūkam mēs piešķirsim nākamajam mezglam pagaidu nosaukumu, kā parādīts zemāk esošajā diagrammā.

3. darbība. Tā kā mums ir jauns atsauces mezgls ar nosaukumu “pagaidu”, kas var palīdzēt mums šķērsot visu saistīto sarakstu, līdz mēs nesaņemam nulles rādītāju, tāpēc mēs varam iestatīt nākamo galvenes mezgla saiti kā null, kas neietekmēs saistīto sarakstu, kā parādīts zemāk diagrammā. Nulles rādītāju blakus pašreizējam mezglam sauc par iepriekšējo mezglu.

4. darbība. Tagad mēs pārvietojam pagaidu mezglu uz nākamo mezglu un pašreizējo mezglu uz iepriekšējo pagaidu mezglu. Tātad tagad mēs esam pārcēlušies uz nākamo mezglu. Mēs arī mainām iepriekšējo mezglu no nulles uz tikai pašreizējā mezgla iepriekšējo mezglu. Tātad tagad pagaidu mezgls parūpēsies par visiem traversiem līdz nulles rādītājam, lai mēs varētu iestatīt pašreizējā mezgla saiti uz iepriekšējo mezglu, un tagad tas norāda uz iepriekšējo mezglu, kā parādīts zemāk esošajā diagrammā.

Tātad mēs veicam tās pašas darbības, un beidzot mēs iegūsim apgrieztu saistīto sarakstu.

5. darbība .

6. darbība.

7. darbība.

8. darbība.

9. darbība.

10. darbība.

11. darbība.

12. darbība.

13. darbība.

14. darbība. Šajā darbībā mūsu saistītais saraksts tika mainīts.

Programma C++, lai mainītu saistīto sarakstu

#include
izmantojot nosaukumvieta std ;

// Mezgla izveides metode
struktūra mezgls {
starpt vērtību ;
mezgls * nextNodePtr ;
} * mezglsObject ;

nederīgs izveidotLinkedList ( starpt n ) ;
nederīgs reverseLinkedList ( mezgls ** mezglsObject ) ;
nederīgs displejs ( ) ;

starpt galvenais ( ) {
starpt n,vērtība,prece ;
cout << 'Cik mezglu vēlaties izveidot =>:' ;
ēšana >> n ;
izveidotLinkedList ( n ) ;
cout << ' \n Informācija saistītajā sarakstā: \n ' ;
displejs ( ) ;
cout << ' \n Saistītais saraksts pēc apvērsuma \n ' ;
reverseLinkedList ( & mezglsObject ) ;
displejs ( ) ;
atgriezties 0 ;
}
// Šī metode izveidos saistīto sarakstu
nederīgs izveidotLinkedList ( starpt n ) {
struktūra mezgls * frontNode, * tempNode ;
starpt vērtība, t.i ;

mezglsObject = ( struktūra mezgls * ) malloc ( izmērs ( struktūra mezgls ) ) ;
ja ( mezglsObject == NULL )
cout << 'Nepietiek, lai piešķirtu atmiņu' ;
cits {
cout << 'Lūdzu, ievadiet 1. mezgla informāciju (tikai numurs):' ;
ēšana >> vērtību ;
mezglsObject - > vērtību = vērtību ;
mezglsObject - > nextNodePtr = NULL ;
tempNode = mezglsObject ;

priekš ( i = divi ; i <= n ; i ++ ) {
frontNode = ( struktūra mezgls * ) malloc ( izmērs ( struktūra mezgls ) ) ;

// Ja saistītajā sarakstā nav neviena mezgla
ja ( frontNode == NULL ) {
cout << 'Atmiņu nevar piešķirt' ;
pārtraukums ;
}
cits {
cout << 'Lūdzu, ievadiet mezgla informāciju' << i << ':' ;
ēšana >> vērtību ;
frontNode - > vērtību = vērtību ;
frontNode - > nextNodePtr = NULL ;
tempNode - > nextNodePtr = frontNode ;
tempNode = tempNode - > nextNodePtr ;
}
}
}
}

nederīgs reverseLinkedList ( mezgls ** mezglsObject ) {
struktūra mezgls * tempNode = NULL ;
struktūra mezgls * IepriekšējaisMezgls = NULL ;
struktūra mezgls * pašreizējaisNode = ( * mezglsObject ) ;
kamēr ( pašreizējaisNode ! = NULL ) {
tempNode = pašreizējaisNode - > nextNodePtr ;
pašreizējaisNode - > nextNodePtr = IepriekšējaisMezgls ;
IepriekšējaisMezgls = pašreizējaisNode ;
pašreizējaisNode = tempNode ;
}
( * mezglsObject ) = IepriekšējaisMezgls ;
}
nederīgs displejs ( ) {
struktūra mezgls * tempNode ;
ja ( mezglsObject == NULL ) {
cout << 'Saistītais saraksts ir tukšs' ;
}
cits {
tempNode = mezglsObject ;
kamēr ( tempNode ! = NULL )
{
cout << tempNode - > vērtību << ' \t ' ;
tempNode = tempNode - > nextNodePtr ;
}
}
cout << endl ;
}

Izvade

Cik mezglu vēlaties izveidot =>: 6
Lūdzu, ievadiet 1. mezgla informāciju (tikai numurs): 101
Lūdzu, ievadiet 2. mezgla informāciju: 95
Lūdzu, ievadiet 3. mezgla informāciju: 61
Lūdzu, ievadiet 4. mezgla informāciju: 19
Lūdzu, ievadiet 5. mezgla informāciju: 12
Lūdzu, ievadiet 6. mezgla informāciju: 11

Informācija saistītajā sarakstā:
101 95 61 19 12 11

Saistītais saraksts pēc apvērsuma
11 12 19 61 95 101

Secinājums

Šajā LinuxHint rakstā ir apskatīts, kā mainīt saistīto sarakstu programmā C++. Ir dažas citas metodes, kā mainīt saistīto sarakstu, taču šī ir ļoti izplatīta metode saistītā saraksta apvēršanai. Jūsu ziņā ir izlemt, kā vēlaties atrisināt savas problēmas, taču parasti apgrieztā saraksta funkcijai ir jābūt vienkāršai cilpai ar rādītāju mijmaiņām.