আমাদের একটি ফাংশন ইনসার্ট (ডেটা, পজিশন) তৈরি করতে হবে যা লিঙ্ক করা তালিকায় প্রদত্ত অবস্থানে ডেটা সন্নিবেশ করে। আমরা নিম্নলিখিত ধাপগুলি সম্পাদন করব -
- একটি নতুন নোড তৈরি করুন
- তালিকা খালি আছে কিনা তা পরীক্ষা করুন। যদি এটি মাথা এবং পুচ্ছের সাথে নোড যোগ করে এবং ফিরে আসে।
- যদি না হয়, তাহলে আমরা currElem ব্যবহার করে যে অবস্থানে এটি সন্নিবেশ করতে চাই সেই অবস্থানে পুনরাবৃত্তি করব। আমরা currElem এর সমান currElem.next করে একটি লিঙ্কযুক্ত তালিকা পুনরাবৃত্তি করি।
এখন আমরা নিম্নলিখিত উপায়ে লিঙ্কগুলি পরিবর্তন করি -
- একটি তালিকার পরবর্তী নোডে নতুন নোড পয়েন্ট করুন
- নতুন নোডে পরবর্তী নোডের আগের পয়েন্ট করুন
- আমাদের নোডকে পূর্ববর্তী নোডের দিকে বিন্দু করুন
- নতুন নোডে আগের নোডের পরবর্তী পয়েন্ট করুন
অবশেষে, আমরা currElem থেকে বাকি তালিকার লিঙ্কটি ভেঙে ফেলি এবং এটিকে আমাদের তৈরি নোডে নির্দেশ করি। এখন নোডটি প্রদত্ত অবস্থানে তালিকায় রয়েছে।
এখানে একই -
এর একটি দৃষ্টান্ত রয়েছে
এখন দেখা যাক কিভাবে আমরা এটি বাস্তবায়ন করব −
উদাহরণ
insert(data, position = this.length) { let node = new this.Node(data); this.length++; // List is currently empty if (this.head === null) { this.head = node; this.tail = node; return this.head; } // Insertion at head if (position == 0) { node.prev = null; node.next = this.head; this.head.prev = node; this.head = node; return this.head; } let iter = 1; let currNode = this.head; while (currNode.next != null && iter < position) { currNode = currNode.next; iter++; } // Make new node point to next node in list node.next = currNode.next; // Make next node's previous point to new node if (currNode.next != null) { currNode.next.prev = node; } // Make our node point to previous node node.prev = currNode; // Make previous node's next point to new node currNode.next = node; // check if inserted element was at the tail, if yes then make tail point to it if (this.tail.next != null) { this.tail = this.tail.next; } return node; }
মনে রাখবেন যে আমরা শেষ উপাদান হিসাবে অবস্থান দিয়েছি। এটির কারণ যদি আপনি একটি অবস্থান প্রদান না করেন, এটি ডিফল্টরূপে শেষ পর্যন্ত ঢোকানো হবে৷
আপনি এটি ব্যবহার করে পরীক্ষা করতে পারেন:
উদাহরণ
let list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.insert(15, 2); list.display();
আউটপুট
এটি আউটপুট দেবে −
10 <-> 30 <-> 15 <-> 20 <->
আমরা দেখতে পাচ্ছি যে সমস্ত উপাদান আমাদের উদ্দেশ্য অনুসারে রয়েছে। আমরা 2 এর পরে অবস্থানে 15 সন্নিবেশ করার চেষ্টা করেছি।