সোমবার, ২৮ এপ্রিল, ২০১৪



লিঙ্কড লিস্টে হাতেখড়ি ১

সিঙ্গেল লিঙ্কড লিস্টে প্রতিটা উপাদানকেই পরবর্তী উপাদানের জন্য একটা লিঙ্ক ধারণ করতে হয়।যেহেতু বিভিন্ন ধরনের ডাটাকে ধারণের জন্য সাধারণত স্ট্রাকচার ব্যবহার করা হয়, তাই লিঙ্কড লিস্টের সদস্যরা মূলত একেকটি স্ট্রাকচার। এধরনের স্ট্রাকচারে অন্যান্য ডাটার পাশাপাশি একটি লিঙ্ক পয়েন্টার থাকবেই।
দুই ভাবে সিঙ্গেল লিঙ্কড লিস্ট গঠন করা যেতে পারে। একটা পথ হচ্ছে, পূর্ববর্তী লিঙ্কড লিস্টের পরে নতুন সদস্যকে বসিয়ে দেয়া। আর একটি পথ হচ্ছে, নির্দিষ্ট ক্রমানুসারে নতুন সদস্যকে তার উপযুক্ত স্থানে বসানো।
আচ্ছা আমরা প্রথমে সহজ পথটা নিয়ে চিন্তা করি। নতুন সদস্যকে লিঙ্কড লিস্টের শেষে সিমপ্লি বসিয়ে দেয়া।আলোচনার সুবিধার্থে আমরা একটা স্টাকচার বিবেচনা করি।
struct member {
     int a;
     double f;
     struct member *next; //link to the next address
} data;
আচ্ছা, খুব সহজ ভাবে চিন্তা করি। আগের লিঙ্কড লিস্টের পেছনে নতুন সদস্য যোগ করার সময়ে প্রথমে পূর্ববর্তী লিঙ্কড লিস্টের লিঙ্ক পয়েন্টারে নতুন সদস্যের এড্রেস এসাইন করা হয়।এর পর নতুন সদস্যের ধারণ করা লিঙ্ক পয়েন্টারকে নাল করা হয়।এক্ষেত্রে আরেকটি ব্যাপারও ঘটতে পারে যে, আগে কোন লিঙ্কড লিস্টই ছিল না। তখন এটাই হবে লিস্টের প্রথম উপাদান।
void slstore(struct member *i,
           struct member **last)
{
     if (!*last) *last = i; //first item in list
//there wasn’t any element and so it was NULL
     else (*last)->next = i;//assign the link pointer ‘next’, of the structure indicated by **last i.e. the structure at memory location *last, with the address of the new entry ‘i’.
     i-> next= NULL;//assign NULL to the link pointer of the new entry
*last = i;//copy the new structure entry to the memory location *last
}