কম্পিউটার

প্রকৃতপক্ষে সি ভাষায় বিপরীত না করে একটি লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ করুন


টাস্ক হল রিকারসিভ ফাংশন ব্যবহার করে প্রদত্ত লিঙ্ক করা তালিকার বিপরীত মুদ্রণ করা। প্রোগ্রামটিকে অবশ্যই উল্টো মুদ্রণ করতে হবে তবে তালিকাটিকে উল্টাতে হবে না যার অর্থ নোডের ক্রম একই থাকে

এখানে, প্রোগ্রামটি একটি প্রথম নোডের ঠিকানা সম্বলিত হেড পয়েন্টারকে পরবর্তী নোডে নিয়ে যাবে যতক্ষণ না NULL পরীক্ষা করা হয় যা একটি তালিকার শেষ নোডে সংরক্ষণ করা হয় এবং একটি হেড নোডের ডেটা প্রিন্ট করা হয়৷

প্রকৃতপক্ষে সি ভাষায় বিপরীত না করে একটি লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ করুন

উদাহরণ

ইনপুট:29 34 43 56 আউটপুট:56 43 34 29

প্রথমত, নোডগুলি তালিকায় ঢোকানো হয় এবং একটি পয়েন্টার সন্নিবেশিত নোডগুলির দিকে নির্দেশ করতে শুরু করবে। চূড়ান্ত তালিকা তৈরি হওয়ার পরে ধরা যাক টেম্প পয়েন্টারটি প্রথম নোড পয়েন্টার দিয়ে শুরু করা হবে এবং নোডের পরবর্তী ঠিকানাটি NULL না হওয়া পর্যন্ত এটি বাড়তে থাকে কারণ শেষ নোডটি কিছুই না করে এবং শেষ নোড থেকে তালিকাটি হেড পয়েন্টার পর্যন্ত অতিক্রম করা হয়। এটি আসলে একটি তালিকাকে বিপরীত না করে একটি তালিকার বিপরীত প্রদর্শন করবে৷

নিচের কোডটি প্রদত্ত অ্যালগরিদমের সি বাস্তবায়ন দেখায়।

অ্যালগরিদম

স্টার্ট স্টেপ 1 -> টাইপ স্ট্রাকচারের নোড ভেরিয়েবল তৈরি করুন int ডেটা ঘোষণা করুন * পরবর্তী ধাপ 2 ব্যবহার করে টাইপ নোডের পয়েন্টার ঘোষণা করুন -> ফাংশন বাতিল ঘোষণা করুন (নোড* হেড) IF head ==NULL রিটার্ন কল রিভার্স (head-> পরবর্তী) প্রিন্ট হেড->ডেটা ধাপ 3 -> ফাংশন বাতিল ঘোষণা করুন (নোড** শিরোনাম, চার নতুন ডেটা) ম্যালোক ব্যবহার করে মেমরি বরাদ্দ করুন নিউনোড সেট করুন->ডেটা =নিউডাটা সেট করুন নিউনোড->পরবর্তী =(*হেডার) সেট (*হেডার) =নিউনোড ধাপ 4 ->মেনে() নোড ব্যবহার করে তালিকা তৈরি করুন* হেড =NULL পুশ(&head, 56) কল রিভার্স(হেড)স্টপ এর মাধ্যমে উপাদান সন্নিবেশ করুন 

উদাহরণ

#include#include//একটি নোডস্ট্রাক্ট নোডের জন্য গঠন তৈরি করা { int ডেটা; node* next;};//function to print to data reverse in listvoid reverse(node* head) { if (head ==NULL) return; বিপরীত (মাথা->পরবর্তী); printf("%d", head->data);}// listvoid push(node** header, char newdata) { struct node* newnode =(struct node*)malloc(sizeof(struct) এ নোড পুচ করার ফাংশন নোড)); নিউনোড->ডেটা =নতুন ডেটা; নিউনোড->পরবর্তী =(*হেডার); (*হেডার) =newnode;}int main() { node* head =NULL; push(&head, 56); তালিকা পুশ (&head, 43); push(&head, 34); push(&head, 29); বিপরীত (মাথা); রিটার্ন 0;

আউটপুট

যদি আমরা উপরের প্রোগ্রামটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে।

একটি লিঙ্ক করা তালিকার বিপরীত 56 43 34 29

  1. লিঙ্ক করা তালিকার শেষ k নোডগুলিকে C ভাষায় বিপরীত ক্রমে পুনরাবৃত্তিমূলক পদ্ধতিতে প্রিন্ট করুন

  2. লিঙ্ক করা তালিকার শেষ k নোডগুলিকে C ভাষায় বিপরীত ক্রমে রিকার্সিভ অ্যাপ্রোচ প্রিন্ট করুন

  3. লিংকড লিস্টের বিকল্প নোড (পুনরাবৃত্ত পদ্ধতি) সি ভাষায় প্রিন্ট করুন

  4. সি প্রোগ্রামে অতিরিক্ত স্থান এবং পরিবর্তন ছাড়াই লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ করুন।