কম্পিউটার

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


আমাদের লিঙ্ক করা তালিকার k নোডের সংখ্যা বিপরীত ক্রমে প্রিন্ট করতে হবে। এই সমস্যা সমাধানের জন্য আমাদের পুনরাবৃত্তিমূলক পদ্ধতি প্রয়োগ করতে হবে।

পুনরাবৃত্তিমূলক পদ্ধতি হল এমন একটি যা সাধারণত লুপগুলি ব্যবহার করে যা শর্তটি মান 1 বা সত্য না হওয়া পর্যন্ত কার্যকর করা হয়৷

ধরা যাক, তালিকায় 29, 34, 43, 56 এবং 88 নোড রয়েছে এবং k-এর মান 2 এর চেয়ে আউটপুট হলে k পর্যন্ত বিকল্প নোড হবে যেমন 56 এবং 88।

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

উদাহরণ

লিঙ্ক করা তালিকা:29->34->43->56->88ইনপুট:2আউটপুট:56 88

যেহেতু আমাদের তালিকা থেকে শেষ k উপাদানগুলি সরিয়ে ফেলতে হবে তা করার সবচেয়ে ভাল উপায় হল স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করা যেখানে উপাদানগুলিকে পুশ করা হয় যা তালিকা তৈরি করবে এবং স্ট্যাকের শুরুর উপাদানগুলি তালিকার শেষ উপাদান এবং তারা আমাদের লিঙ্ক করা তালিকার শেষ নোডগুলি দিয়ে kth সংখ্যা পর্যন্ত স্ট্যাক থেকে পপ আউট করুন৷

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

অ্যালগরিদম

স্টার্ট স্টেপ 1 -> টাইপ স্ট্রাকচারের নোড ভেরিয়েবল তৈরি করুন int ডেটা ঘোষণা করুন *পরবর্তী ধাপ 2 ব্যবহার করে টাইপ নোডের পয়েন্টার ঘোষণা করুন -> স্ট্রাকট নোড* intoList(int data) তৈরি করুন malloc ব্যবহার করে নতুন নোড তৈরি করুন সেট newnode->data =data newnode ->পরবর্তী =NULL রিটার্ন নিউনোড ধাপ 3 -> ফাংশন বাতিল ঘোষণা করুন (struct node* head,int count, int k) struct node তৈরি করুন* temp1 =head Loop while(temp1 !=NULL) count++ temp1 =temp1->পরবর্তী প্রান্ত int অ্যারে [গণনা] ঘোষণা করুন, temp2 =গণনা, i সেট temp1 =হেড লুপ যখন(temp1 !=NULL) সেট অ্যারে [--temp2] =temp1->ডেটা সেট temp1 =temp1-> i =0 এবং এর জন্য পরবর্তী শেষ লুপ i  প্রধান() স্ট্রাকট নোড ব্যবহার করে তালিকা তৈরি করুন* head =intoList(9) সেট k=3 এবং count=0 Call rev(head,count,k)STOP 

উদাহরণ

#include#include// একটি নোডস্ট্রাক্ট নোডের কাঠামো { int ডেটা; struct নোড *next;};// একটি নতুন নোডস্ট্রাক্ট নোড* ইনসার্ট করার জন্য ফাংশন তালিকা(int ডেটা) { struct node* newnode =(struct node*)malloc(sizeof(struct node)); নিউনোড->ডেটা =ডেটা; newnode->next =NULL; রিটার্ন নিউনোড;}// একটি nodevoid rev (struct node* head,int count, int k) { struct node* temp1 =head; while(temp1 !=NULL) { count++; temp1 =temp1->পরবর্তী; } int অ্যারে [গণনা], temp2 =গণনা, i; temp1 =মাথা; while(temp1 !=NULL) { array[-temp2] =temp1->ডেটা; temp1 =temp1->পরবর্তী; } for(i =0; i পরবর্তী =intoList(76); head->next->next =intoList(13); head->next->next->next =intolist(24); head->next->next->next->next =intolist(55); head->next->next->next->next->next =intolist(109); int k =3, গণনা =0; rev (মাথা, গণনা, কে); //কলিং ফাংশন প্রিন্ট করার জন্য বিপরীতভাবে 0; }

আউটপুট

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

 একটি তালিকার বিপরীত হল :109 55 24

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

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

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

  4. C++ এ সার্কুলার লিঙ্কড লিস্টের নোডের সমষ্টি