এই নিবন্ধে, আমরা বুঝতে পারব কিভাবে একটি লিঙ্কডলিস্টে লুপ সনাক্ত করতে হয়। একটি লিঙ্ক করা তালিকা হল ডেটা স্ট্রাকচারের একটি ক্রম, যা লিঙ্কের মাধ্যমে একসাথে সংযুক্ত থাকে। লিঙ্কযুক্ত তালিকা হল লিঙ্কগুলির একটি ক্রম যা আইটেমগুলি ধারণ করে। প্রতিটি লিঙ্কে অন্য লিঙ্কের সাথে সংযোগ রয়েছে।
নীচে একই -
এর একটি প্রদর্শন রয়েছে৷ধরুন আমাদের ইনপুট হল −
প্রোগ্রাম চালান
কাঙ্খিত আউটপুট হবে −
লিঙ্ক করা তালিকায় লুপটি বিদ্যমান
অ্যালগরিদম
ধাপ 1 - START ধাপ 2 - নাম ঘোষণা করুন ধাপ 3 - মানগুলি সংজ্ঞায়িত করুন৷ ধাপ 4 - প্রাসঙ্গিক সদস্যদের সাথে ক্লাসটি সংজ্ঞায়িত করুন৷ ধাপ 5 - ক্লাসের একটি উদাহরণ তৈরি করুন এবং নোডগুলি শুরু করুন৷ ধাপ 6 - পরীক্ষা করার জন্য ফাংশনগুলি সংজ্ঞায়িত করুন যদি এটি একটি লুপ হয়। ধাপ 7 - এর জন্য, একটি হ্যাশসেট তৈরি করুন এবং শীর্ষস্থানীয় নোডে উপাদান যোগ করুন। ধাপ 8 - প্রতিটি পুনরাবৃত্তির পর নোডটিকে পরবর্তী উপাদানের দিকে নির্দেশ করুন। ধাপ 9 - প্রধান পদ্ধতিতে, একটি উদাহরণ তৈরি করুন এবং 'পুশ' পদ্ধতি ব্যবহার করে তালিকায় উপাদান যোগ করুন। ধাপ 10 - 'চেক_লুপ' পদ্ধতিতে কল করুন এবং কনসোলে প্রাসঙ্গিক বার্তা প্রদর্শন করুন। ধাপ 11 - থামুনউদাহরণ 1
এখানে, আমরা লুপ খুঁজতে ট্রাভার্সাল পদ্ধতি ব্যবহার করি।
java.util.*; পাবলিক ক্লাস ডেমো { স্ট্যাটিক নোড হেড; স্ট্যাটিক ক্লাস নোড { int ডেটা; পরবর্তী নোড; নোড(int d){ data =d; পরবর্তী =শূন্য; } } স্ট্যাটিক পাবলিক ভ্যাড পুশ(int new_data){ Node new_node =new Node(new_data); new_node.next =মাথা; head =new_node; } স্ট্যাটিক বুলিয়ান চেক_লুপ(নোড হেড){ হ্যাশসেট<নোড> এস =নতুন হ্যাশসেট<নোড>(); while (head !=null) { if (s.contains(head)) true ফিরে আসে; s.add(head); head =head.next; } রিটার্ন মিথ্যা; } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস){ System.out.println("প্রয়োজনীয় প্যাকেজ ইম্পোর্ট করা হয়েছে"); ডেমো ইনপুট_লিস্ট =নতুন ডেমো(); input_list.push(45); input_list.push(60); input_list.push(75); input_list.push(90); input_list.head.next.next.next.next =input_list.head; if (check_loop(head)) System.out.println("লুপটি লিঙ্ক করা তালিকায় বিদ্যমান"); else System.out.println("লিঙ্ক করা তালিকায় লুপটি বিদ্যমান নেই"); } }
আউটপুট
প্রয়োজনীয় প্যাকেজগুলি আমদানি করা হয়েছে লিঙ্কযুক্ত তালিকায় লুপটি বিদ্যমান রয়েছে
উদাহরণ 2
এখানে, আমরা ক্রিয়াকলাপগুলিকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্রদর্শনকারী ফাংশনে অন্তর্ভুক্ত করি।
পাবলিক ক্লাস ডেমো {নোড হেড;স্ট্যাটিক ক্লাস নোড {int মান;নোড নেক্সট;নোড(int d) {value =d;next =null;}}public boolean check_loop() {নোড first_node =head;Node second_node =head;while(first_node !=null &&first_node.next !=null) {first_node =first_node.next.next;second_node =second_node.next;if(first_node ==second_node) {return true;}}public false;} void main(String[] args) {ডেমো input_list =new Demo();input_list.head =new Node(45);Node second_node =new Node(60);Node third_node =new Node(75);Node fourth_node =new Node (90);input_list.head.next =second_node;second_node.next =third_node;third_node.next =fourth_node;foorth_node.next =second_node;System.out.print("লিঙ্ক করা তালিকার উপাদানগুলি হল:");int i =1;যখন (i <=4) {System.out.print(input_list.head.value + " ");input_list.head =input_list.head.next;i++;}বুলিয়ান লুপ =input_list.check_loop();if (লুপ) {System.out.println("\nলিঙ্ক করা তালিকায় একটি লুপ আছে।");} অন্যথায় {System.out.println("\nসেখানে e লিঙ্ক করা তালিকায় কোন লুপ নেই।");}}}
আউটপুট
প্রয়োজনীয় প্যাকেজগুলি আমদানি করা হয়েছে লিঙ্কযুক্ত তালিকায় লুপটি বিদ্যমান রয়েছে