ரிவர்ஸ் ஏ இணைக்கப்பட்ட பட்டியல் (சி++)

Rivars E Inaikkappatta Pattiyal Ci



C++ இல் இணைக்கப்பட்ட பட்டியலை எவ்வாறு மாற்றுவது என்பது இந்த LinuxHint டுடோரியலில் காட்டப்பட்டுள்ளது. இணைக்கப்பட்ட பட்டியலை நீங்கள் தலைகீழாக மாற்றினால், இணைப்பு பாதை தலைகீழாக மாறும், மேலும் தலை வாலாகவும், வால் தலையாகவும் மாறும். முனைகளின் நிலைகளை மாற்றுவதன் மூலம், நாம் இதை விரைவாக புரிந்து கொள்ள முடியும். இந்த இடமாற்றத்தில், முனைகளின் நிலைகளை இடமிருந்து வலமாக அல்லது நேர்மாறாக மாற்றுவோம்.

இணைக்கப்பட்ட பட்டியல்: இது நாம் மாற்றியமைக்க விரும்பும் இணைக்கப்பட்ட பட்டியல்.







இணைக்கப்பட்ட பட்டியலை மாற்றிய பின்: மேலே இணைக்கப்பட்ட பட்டியலை மாற்றிய பின் கீழே உள்ள முடிவு இருக்கும்.





மேலே உள்ள எடுத்துக்காட்டு வரைபடத்தில், இணைக்கப்பட்ட பட்டியலை மாற்றியமைக்கும்போது தலை முனை மற்றும் வால் முனை ஆகியவை அவற்றின் நிலைகளை மாற்றுவதைக் காணலாம். இப்போது வால் முனையாக இருக்கும் தலை முனை, பூஜ்ய முனையை சுட்டிக்காட்டுகிறது, ஏனெனில் அது இப்போது வால் முனையாக உள்ளது.





அல்காரிதம் படிகள்

  1. நாங்கள் ஒரு முக்கிய முறையை உருவாக்கி, தேவையான சில மாறிகளை அறிவிக்கிறோம்.
  2. பின்னர், இணைக்கப்பட்ட பட்டியலை உருவாக்கக்கூடிய ஒரு முறையை உருவாக்குவது எங்கள் அடுத்த படியாகும். இணைக்கப்பட்ட பட்டியலை உருவாக்க இந்த முறை உதவுகிறது.
  3. இணைக்கப்பட்ட பட்டியலை மாற்றுவதற்கான ஒரு முறையை உருவாக்குவது அடுத்த படியாகும். இந்த முறையில், நாம் முழு இணைக்கப்பட்ட பட்டியலையும் கடந்து செல்கிறோம், மேலும் இந்த முறை இணைக்கப்பட்ட பட்டியலை மாற்றியமைக்கும்.
  4. இப்போது, ​​​​எங்கள் முடிவை மாற்றிய பின் காண்பிக்க மற்றொரு முறை தேவை.
  5. மேலே உள்ள அனைத்து முறைகளையும் எங்கள் முக்கிய முறையுடன் இணைப்போம்.

தலைகீழாக இணைக்கப்பட்ட பட்டியலைப் புரிந்துகொள்வதை எளிதாக்குவதற்கு சில சித்திர வடிவத்தைப் பயன்படுத்தி விளக்கப் போகிறோம். எனவே உதாரணத்துடன் ஆரம்பிக்கலாம்.

கீழே நாம் மாற்றியமைக்க விரும்பும் இணைக்கப்பட்ட பட்டியல்.



படி 1 . பச்சை நிற முனை என்பது ஒரு தலை முனை ஆகும், இது தொடக்கத்தில் முதல் முனையை சுட்டிக்காட்டுகிறது.

படி 2. அடுத்த கட்டத்தில், தலைப்பு முனைக்கு அடுத்துள்ள பூஜ்ய சுட்டிக்காட்டி கிடைக்காத வரை, இணைக்கப்பட்ட முழு பட்டியலையும் கடந்து செல்வோம். அதற்கு, கீழே உள்ள வரைபடத்தில் காட்டப்பட்டுள்ளபடி, அடுத்த முனைக்கு ஒரு தற்காலிக பெயரை ஒதுக்கப் போகிறோம்.

படி 3. எங்களிடம் “தற்காலிக” என்ற புதிய குறிப்பு முனை இருப்பதால், அது பூஜ்ய சுட்டியைப் பெறாத வரை, இணைக்கப்பட்ட பட்டியலை முழுவதுமாகப் பயணிக்க உதவும், எனவே தலைப்பு முனையின் அடுத்த இணைப்பை பூஜ்யமாக அமைக்கலாம், இது இணைக்கப்பட்டதை பாதிக்காது. வரைபடத்தில் கீழே காட்டப்பட்டுள்ளபடி பட்டியல். தற்போதைய முனைக்கு அடுத்துள்ள பூஜ்ய சுட்டி முந்தைய முனை எனப்படும்.

படி 4. இப்போது, ​​தற்காலிக முனையை அடுத்த முனைக்கும் தற்போதைய முனையை முந்தைய தற்காலிக முனைக்கும் நகர்த்துகிறோம். எனவே இப்போது நாம் அடுத்த முனைக்கு சென்றுள்ளோம். முந்தைய முனையை பூஜ்யத்திலிருந்து தற்போதைய முனையின் முந்தைய முனைக்கு மாற்றுவோம். எனவே இப்போது தற்காலிக முனையானது பூஜ்ய சுட்டிக்காட்டி வரை அனைத்து டிராவர்ஸையும் கவனித்துக் கொள்ளும், இதனால் தற்போதைய முனையின் இணைப்பை முந்தைய முனைக்கு அமைக்கலாம், இப்போது அது கீழே உள்ள வரைபடத்தில் காட்டப்பட்டுள்ளபடி முந்தைய முனையை சுட்டிக்காட்டுகிறது.

எனவே நாங்கள் அதே படிகளைப் பின்பற்றுகிறோம், கடைசியாக, தலைகீழ் இணைக்கப்பட்ட பட்டியலைப் பெறுவோம்.

படி 5 .

படி 6.

படி 7.

படி 8.

படி 9.

படி 10.

படி 11.

படி 12.

படி 13.

படி 14. இந்த கட்டத்தில், எங்கள் இணைக்கப்பட்ட பட்டியல் தலைகீழாக மாற்றப்பட்டது.

இணைக்கப்பட்ட பட்டியலை மாற்றுவதற்கு C++ நிரல்

# அடங்கும்
பயன்படுத்தி பெயர்வெளி வகுப்பு ;

// முனையை உருவாக்கும் முறை
கட்டமைக்க முனை {
முழு எண்ணாக மதிப்பு ;
முனை * nextNodePtr ;
} * nodeObject ;

வெற்றிடமானது இணைக்கப்பட்ட பட்டியல் உருவாக்கவும் ( முழு எண்ணாக n ) ;
வெற்றிடமானது reverseLinkedList ( முனை ** nodeObject ) ;
வெற்றிடமானது காட்சி ( ) ;

முழு எண்ணாக முக்கிய ( ) {
முழு எண்ணாக n,மதிப்பு,உருப்படி ;
கூட் << 'எத்தனை முனைகளை உருவாக்க விரும்புகிறீர்கள் =>:' ;
உண்ணுதல் >> n ;
இணைக்கப்பட்ட பட்டியல் உருவாக்கவும் ( n ) ;
கூட் << ' \n இணைக்கப்பட்ட பட்டியலில் உள்ள தகவல்: \n ' ;
காட்சி ( ) ;
கூட் << ' \n தலைகீழான பிறகு இணைக்கப்பட்ட பட்டியல் \n ' ;
reverseLinkedList ( & nodeObject ) ;
காட்சி ( ) ;
திரும்ப 0 ;
}
// இந்த முறை இணைக்கப்பட்ட பட்டியலை உருவாக்கும்
வெற்றிடமானது இணைக்கப்பட்ட பட்டியல் உருவாக்கவும் ( முழு எண்ணாக n ) {
கட்டமைக்க முனை * முன் முனை, * தற்காலிக முனை ;
முழு எண்ணாக மதிப்பு, i ;

nodeObject = ( கட்டமைக்க முனை * ) malloc ( அளவு ( கட்டமைக்க முனை ) ) ;
என்றால் ( nodeObject == ஏதுமில்லை )
கூட் << 'நினைவகத்தை அதிகரிக்க போதாது' ;
வேறு {
கூட் << 'தயவுசெய்து முனை 1 இன் தகவலை உள்ளிடவும் (எண் மட்டும்): ' ;
உண்ணுதல் >> மதிப்பு ;
nodeObject - > மதிப்பு = மதிப்பு ;
nodeObject - > nextNodePtr = ஏதுமில்லை ;
தற்காலிக முனை = nodeObject ;

க்கான ( நான் = இரண்டு ; நான் <= n ; நான் ++ ) {
முன்முனை = ( கட்டமைக்க முனை * ) malloc ( அளவு ( கட்டமைக்க முனை ) ) ;

// இணைக்கப்பட்ட பட்டியலில் எந்த முனையும் இல்லாதபோது
என்றால் ( முன்முனை == ஏதுமில்லை ) {
கூட் << 'நினைவகத்தை ஒதுக்க முடியாது' ;
உடைக்க ;
}
வேறு {
கூட் << 'தயவுசெய்து முனையின் தகவலை உள்ளிடவும்' << நான் << ':' ;
உண்ணுதல் >> மதிப்பு ;
முன்முனை - > மதிப்பு = மதிப்பு ;
முன்முனை - > nextNodePtr = ஏதுமில்லை ;
தற்காலிக முனை - > nextNodePtr = முன்முனை ;
தற்காலிக முனை = தற்காலிக முனை - > nextNodePtr ;
}
}
}
}

வெற்றிடமானது reverseLinkedList ( முனை ** nodeObject ) {
கட்டமைக்க முனை * தற்காலிக முனை = ஏதுமில்லை ;
கட்டமைக்க முனை * முந்தைய முனை = ஏதுமில்லை ;
கட்டமைக்க முனை * தற்போதைய முனை = ( * nodeObject ) ;
போது ( தற்போதைய முனை ! = ஏதுமில்லை ) {
தற்காலிக முனை = தற்போதைய முனை - > nextNodePtr ;
தற்போதைய முனை - > nextNodePtr = முந்தைய முனை ;
முந்தைய முனை = தற்போதைய முனை ;
தற்போதைய முனை = தற்காலிக முனை ;
}
( * nodeObject ) = முந்தைய முனை ;
}
வெற்றிடமானது காட்சி ( ) {
கட்டமைக்க முனை * தற்காலிக முனை ;
என்றால் ( nodeObject == ஏதுமில்லை ) {
கூட் << 'இணைக்கப்பட்ட பட்டியல் காலியாக உள்ளது' ;
}
வேறு {
தற்காலிக முனை = nodeObject ;
போது ( தற்காலிக முனை ! = ஏதுமில்லை )
{
கூட் << தற்காலிக முனை - > மதிப்பு << ' \t ' ;
தற்காலிக முனை = தற்காலிக முனை - > nextNodePtr ;
}
}
கூட் << endl ;
}

வெளியீடு

நீங்கள் எத்தனை முனைகளை உருவாக்க விரும்புகிறீர்கள் =>: 6
முனை 1 இன் தகவலை உள்ளிடவும் (எண் மட்டும்): 101
முனை 2:95 இன் தகவலை உள்ளிடவும்
முனை 3:61 இன் தகவலை உள்ளிடவும்
முனை 4:19 இன் தகவலை உள்ளிடவும்
முனை 5:12 இன் தகவலை உள்ளிடவும்
முனை 6:11 இன் தகவலை உள்ளிடவும்

இணைக்கப்பட்ட பட்டியலில் உள்ள தகவல்:
101 95 61 19 12 11

தலைகீழான பிறகு இணைக்கப்பட்ட பட்டியல்
11 12 19 61 95 101

முடிவுரை

இந்த LinuxHint கட்டுரை C++ இல் இணைக்கப்பட்ட பட்டியலை எவ்வாறு மாற்றுவது என்பதை மதிப்பாய்வு செய்துள்ளது. இணைக்கப்பட்ட பட்டியலை மாற்றுவதற்கு வேறு சில முறைகள் உள்ளன, ஆனால் இணைக்கப்பட்ட பட்டியலை மாற்ற இது மிகவும் பொதுவான முறையாகும். உங்கள் பிரச்சனைகளை எவ்வாறு தீர்க்க வேண்டும் என்பதை நீங்கள் தீர்மானிக்க வேண்டும், ஆனால் பொதுவாக தலைகீழ் இணைக்கப்பட்ட பட்டியல் செயல்பாடு சுட்டிக்காட்டி இடமாற்றங்களுடன் ஒரு எளிய வளையமாக இருக்க வேண்டும்.