পাইথনে একটি লিঙ্কযুক্ত তালিকা কীভাবে প্রয়োগ করা যায়?



এই নিবন্ধটি দেখায় যে কীভাবে আপনি আপডেট সন্নিবেশ করতে এবং লিঙ্কযুক্ত তালিকার উপাদানগুলিকে সরাতে বিভিন্ন পদ্ধতির সাহায্যে পাইথনে একটি লিঙ্কযুক্ত তালিকা তৈরি করতে পারেন।

পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ বাক্য বহির্মুখী বাস্তবায়ন সহ একটি উন্মুক্ত উত্স ভাষা যা এটি অনন্য এবং শিখতে সহজ করে তোলে। যদিও লিঙ্কযুক্ত তালিকার ধারণাকে সমর্থন করে না, লিঙ্কযুক্ত তালিকা পাওয়ার জন্য এটি বিভিন্ন বাস্তবায়নের মাধ্যমে একটি উপায় রয়েছে। এই নিবন্ধে আমরা শিখব কীভাবে আমরা পাইথনে লিঙ্কযুক্ত তালিকা তৈরি করতে পারি। নীচে এই ব্লগের বিষয়গুলি অন্তর্ভুক্ত করা হয়েছে:

চল শুরু করি!!





লিঙ্কযুক্ত তালিকা কি?

লিঙ্ক তালিকার অনুরূপ ডাটা টাইপযুক্ত নোডগুলির ক্রম, প্রতিটি নোডে একটি নোড অবজেক্ট এবং পরবর্তী নোডের পয়েন্টার থাকে।

একটি লিঙ্কযুক্ত তালিকা একাধিক নোড সংগ্রহ সহ একটি লিনিয়ার ডেটা কাঠামো। যেখানে ইআচ উপাদান তার নিজস্ব ডেটা এবং পরবর্তী উপাদানটির অবস্থানের জন্য একটি পয়েন্টার সঞ্চয় করে। একটি লিঙ্কযুক্ত তালিকার শেষ লিঙ্কটি শূন্যের দিকে নির্দেশ করে, শৃঙ্খলের শেষটি নির্দেশ করে। লিঙ্কযুক্ত তালিকার একটি উপাদানকে বলা হয় অ নোড । প্রথম নোডকে বলা হয় মাথা শেষ নোড বলা হয়দ্য লেজ
লিঙ্কযুক্ত তালিকা - পাইথনে লিঙ্কযুক্ত তালিকা - এডুরেকাস্ট্যান্ডার্ড পাইথন গ্রন্থাগারের কোনও লিঙ্কযুক্ত তালিকা নেই। আমরা নোডের ধারণাটি ব্যবহার করে লিংক তালিকার ডেটা স্ট্রাকচারের ধারণাটি বাস্তবায়ন করতে পারি।



এখন যা আমরা লিঙ্কযুক্ত তা সম্পর্কে শিখেছি। সুতরাং আসুন একটি লিঙ্কযুক্ত তালিকার বাস্তবায়নের দিকে এগিয়ে যাওয়া যাক।

একটি লিঙ্কযুক্ত তালিকা বাস্তবায়ন করা হচ্ছে

একটি লিঙ্কযুক্ত তালিকা তৈরি করার জন্য, আমরা একটি নোড অবজেক্ট তৈরি করি এবং এই নোড অবজেক্টটি ব্যবহার করতে অন্য শ্রেণি তৈরি করি।
নোড ক্লাস তৈরির জন্য কোড।
উপরের প্রোগ্রামটি তিনটি ডাটা উপাদান সহ একটি লিঙ্কযুক্ত তালিকা তৈরি করে।

ক্লাস নোড (অবজেক্ট): # ক্লাস ভেরিয়েবলগুলি ডিফ __init __ (স্ব, ডাটা = কিছুই নয়, নেক্সট_নোড = কিছুই নয়) শুরু করার জন্য কনস্ট্রাক্টর: স্ব.ডাটা = ডেটা সেলস.নেক্সট_নোড = নেক্সট_নোড #get ডেটা ডিএফ গেট_ডাটা (স্ব): রিটার্ন সেল.ডেটা # পরের মানটি ডিফল্ট গেট_নেক্সট (স্বতঃ) পান: ফিরে আসুন স্ব। এনেক্সট_নোড # সেট পরবর্তী ডেটা ডিএফ সেট_নেক্সট (স্বতঃ, নতুন_নেক্সট): স্ব.নেক্সট_নোড = নতুন_নেক্সট

লিঙ্ক তালিকার বাস্তবায়নটি একটি লিঙ্কযুক্ত তালিকায় নিম্নলিখিত কার্যকারিতা নিয়ে গঠিত
এক. .োকান : এই পদ্ধতিটি লিঙ্কযুক্ত তালিকায় একটি নতুন নোড প্রবেশ করবে।
ঘ। আকার : এই পদ্ধতিটি লিঙ্কযুক্ত তালিকার আকার প্রদান করবে।
ঘ। অনুসন্ধান করুন : এই পদ্ধতিটি ডেটাযুক্ত নোডকে ফিরিয়ে দেবে, অন্যথায় ত্রুটি বাড়িয়ে তুলবে
চার। মুছে ফেলা : এই পদ্ধতিটি ডেটাযুক্ত নোডকে মুছে ফেলবে, অন্যথায় ত্রুটি বাড়িয়ে তুলবে



লিঙ্কযুক্ত তালিকার পদ্ধতিগুলি দেখতে দিন

জাভা পদ্ধতিতে ওভারলোডিং এবং ওভাররাইডের মধ্যে পার্থক্য

লিঙ্কযুক্ত তালিকায় আরম্ভ পদ্ধতি method

ক্লাস লিঙ্কডলিস্ট (অবজেক্ট): ডিফ __init __ (স্ব, মাথা = কিছুই নেই): স্ব.হ্যাড = হেড

আরম্ভের পদ্ধতিটি ক এর প্রারম্ভিককরণের জন্য ব্যবহৃত হয় ক্লাস পরিবর্তনশীল যদি তালিকার কোনও নোড না থাকে তবে এটি কোনওটিতে সেট করা নেই।

Sertোকান:

Def সন্নিবেশ (স্ব, ডেটা): নতুন_নোড = নোড (ডেটা) নতুন_নোড.সেট_নেক্সট (সেলফ হেড) সেলফ হেড = নতুন_নোড

এই সন্নিবেশ পদ্ধতিটি ডেটা নেয়, প্রদত্ত ডেটা দিয়ে একটি নতুন নোডকে সূচনা করে এবং এটিকে তালিকায় যুক্ত করে। প্রযুক্তিগতভাবে আপনি তালিকার যে কোনও জায়গায় নোড সন্নিবেশ করতে পারেন তবে এটি করার সহজতম উপায় হ'ল তালিকার শীর্ষে রেখে নতুন নোডটিকে পুরানো মাথার দিকে নির্দেশ করা (লাইনটির নীচে অন্য নোডকে ধাকানোর ধরণ)।

আকার

# তালিকার ডিএফ আকারে (ন্যূনতম) নোডের মোট সংখ্যা প্রদান করে: বর্তমান = স্বজনহীন গণনা = 0 বর্তমান যখন: গণনা + = 1 বর্তমান = বর্তমান.সেট_নেক্সট () ফেরতের গণনা

আকার পদ্ধতিটি খুব সহজ, এটি মূলত নোডগুলি গণনা করে যতক্ষণ না এটি আর খুঁজে না পায় এবং কতটি নোড পেয়েছিল তা ফিরিয়ে দেয়। পদ্ধতিটি নোড থেকে শুরু হয়, নোডের লাইনটি শেষ না হওয়া অবধি যাত্রা করে (বর্তমানটি শেষের দিকে পৌঁছালে কিছুই হবে না) এটি কতটা নোড দেখেছিল তা পর্যবেক্ষণ করে।

অনুসন্ধান করুন

পরিবর্তনীয় এবং অপরিবর্তনীয় মধ্যে পার্থক্য
# নোডডেটা থাকা তালিকার নোডকে ফেরত দেয়, নোড উপস্থিত না থাকলে ডিফ অনুসন্ধান (স্ব, নোডডেটা): ত্রুটি ঘটেছে: বর্তমান = স্ব.হোহাইসডপ্রেসিত = বর্তমান এবং ইস্প্রেসেটের সময় মিথ্যা: যদি কারেন্ট.জেট_ডাটা () == নোডডেটা: ইস্প্রেসেন্ট = অন্যটি সত্য: কারেন্ট = কারেন্ট.জিট_নেক্সট () যদি কারেন্ট না হয়: মান বাড়ান ('ডেটা তালিকায় উপস্থিত নেই') রিটার্ন বর্তমান

অনুসন্ধানটি আসলে আকারের সাথে খুব একই রকম, তবে নোডগুলির পুরো তালিকাটি পরিবর্তনের পরিবর্তে এটি প্রতিটি স্টপে চেক করে যে বর্তমান নোডে অনুরোধ করা ডেটা আছে কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে সেই ডেটা ধারণ করে নোড ফেরত দেয়। যদি পদ্ধতিটি পুরো তালিকার মধ্যে দিয়ে যায় তবে এখনও ডেটা না খুঁজে পায় তবে এটি একটি মান ত্রুটি উত্থাপন করে এবং ব্যবহারকারীকে অবহিত করে যে ডেটা তালিকায় নেই।

মুছে ফেলা

# লিঙ্কযুক্ত তালিকার নোডটি সরান ত্রুটি থেকে ত্রুটি মুছে ফেলুন যদি নোড উপস্থিত না থাকে তবে ডিফল্ট মুছে ফেলুন (স্ব, নোডডেটা): বর্তমান = স্বয়হেড পূর্ববর্তী = কোনওটিই উপস্থিত নেই = বর্তমান এবং ইস্প্রেসেটের ক্ষেত্রে মিথ্যা: যদি বর্তমান.জেট_ডেটা () == নোডডেটা: ইস্প্রেসেট রয়েছে = অন্যটি সত্য: পূর্ববর্তী = বর্তমান বর্তমান = কারেন্ট.জিট_নেক্সট () বর্তমানটি যদি কিছু না হয়: মান অগ্রাহ্য করুন ('ডেটা তালিকায় উপস্থিত নেই') যদি আগেরটি না হয়: সেল্ফ হেড = কারেন্ট.সেট_নেক্সট () অন্য: পূর্ববর্তী.সেট_নেক্সট ( কারেন্ট.জেট_নেক্সট ())

মোছার পদ্ধতিটি তালিকায় একইভাবে অনুসন্ধানটিকে যেমন অনুসরণ করে তেমনি বর্তমান নোডের উপর নজর রাখার পাশাপাশি, মোছার পদ্ধতিটি শেষ নোডটি পরিদর্শন করা হয়েছে তা মনে রাখে। মুছুন যখন অবশেষে নোড এ আসে এটি মুছতে চায়। এটি কেবল চেইন থেকে 'লাফফ্রোগিং' করে সেই নোডটি সরিয়ে দেয়।

এর মাধ্যমে আমার অর্থ এই যে মুছে ফেলা পদ্ধতিটি নোডটি পৌঁছানোর জন্য যখন পৌঁছায় তখন এটি সর্বশেষ নোডটি দেখেছিল ('পূর্ববর্তী' নোড) এবং সেই আগের নোডের পয়েন্টারটিকে পুনরায় সেট করে। পরিবর্তে মুছে ফেলা নোডের দিকে ইঙ্গিত করার চেয়ে।

জাভাতে একটি স্ট্রস্ট্রিং কী?

এটি লাইনের পরবর্তী নোডের দিকে নির্দেশ করবে। যেহেতু কোনও নোড মুছে ফেলা হচ্ছে এমন দুর্বল নোডের দিকে ইঙ্গিত করছে না, এটি কার্যকরভাবে তালিকা থেকে সরানো হয়েছে!

এটি আমাদের এই নিবন্ধের শেষে নিয়ে এসেছিল যেখানে আমরা শিখেছি কীভাবে আমরা পাইথনের সাথে একটি লিঙ্কযুক্ত তালিকা তৈরি করতে পারি একইভাবে বাস্তবায়নের সাথে যদিও পাইথন আসলে একটি লিঙ্কযুক্ত তালিকার ধারণাকে সমর্থন করে না। আমি আশা করি এই টিউটোরিয়ালে আপনার সাথে যা ভাগ করা হয়েছে তার সাথে আপনি পরিষ্কার হয়ে গেছেন।

যদি আপনি এই প্রবন্ধটি 'পাইথনের লিঙ্কযুক্ত তালিকায়' প্রাসঙ্গিক বলে মনে করেন তবে এটি দেখুন 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা বিশ্ব জুড়ে ছড়িয়ে পড়ে।

আমরা এখানে আপনার যাত্রার প্রতিটি পদক্ষেপে আপনাকে সহায়তা করতে এবং এমন একটি পাঠ্যক্রম নিয়ে এসেছি যা শিক্ষার্থী এবং পেশাদারদের জন্য ডিজাইন করা হয়েছে । কোথাকারটি আপনাকে পাইথন প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং বিভিন্ন এবং মূল এবং উন্নত পাইথন উভয় ধারণার পাশাপাশি প্রশিক্ষণের জন্য ডিজাইন করা হয়েছে পছন্দ

যদি আপনার কোনও প্রশ্ন আসে তবে নির্দ্বিধায় 'পাইথনের লিঙ্কযুক্ত তালিকার' মন্তব্য বিভাগে আপনার সমস্ত প্রশ্ন জিজ্ঞাসা করুন এবং আমাদের দলটি উত্তর দিতে পেরে খুশি হবে।