আপডেট

Friday, February 27, 2015

Insert a node at the beginning of the list

প্রথমেই ডাটা টাইপ তৈরী করে ফেলিঃ
   struct Node{  
   int data;  
   struct Node* next;  
   };  
   typedef struct Node node;  
   node* head;  
ডাটা টাইপ তৈরী করার পর node টাইপের পয়েন্টার ভেরিয়েবল ডিক্লেয়ার করে ফেললাম। আপনি যদি আগের পর্বগুলো দেখে থাকেন তাহলে এটা সহজে বুঝে ফেলার কথা।
একটু খেয়াল করবেন, head পয়েন্টার প্রথম নোডের অ্যাড্রেস বহন করবে। তার মানে প্রথম নোডটা সবসময় head হয়ে থাকবে। তো আমরা যদি লিস্টের প্রথমে নতুন নোড যুক্ত করতে চাই নতুন যে নোড আসবে তাকে head করে দেবো। তারমানে হল,  আমরা head->next=head করে দিবো। কাজ শেষ।
এবার তাহলে insert function তৈরী করে ফেলি। সময় স্বল্পতার কারনে আমি শুধু insert function বর্ণনা করবো। বিস্তারিত জানার জন্য এখানে ঘুরে আসতে পারেন । যাইহোক শুরু করে ফেলিঃ
1:  void insert(int data){  
2:  node* temp;  
3:  temp=(*node)malloc(sizeof(node));  
4:  temp->data=data;  
5:  temp->next=head;  
6:  head=temp;  
7:  }  

দ্বিতীয় লাইনে  temp নামের একটি পয়েন্টার ডিক্লেয়ার করা হয়েছে এই পয়েন্টারে আমরা মেমরি allocate করে তার অ্যাড্রেস রাখবো। তারপর মেমরি allocate করে ফেললাম। চতুর্থ লাইনে temp এর ডাটা অংশে মেইন ফাংশন থেকে আশা ডাটা অ্যাসাইন করলাম। তারপর পয়েন্টার অংশে head দিয়ে দিলাম। এখানে একটু ক্লিয়ার করি। temp->next=head মানে হলো পরবর্তীতে যে নোড আসবে তা হয়ে যাবে প্রথম নোড এবং এভাবে চলতে থাকবে। বুঝতে অসুবিধা হলে উপরের চিত্রটি লক্ষ করুন।
আজ এ পর্যন্তই; ধন্যবাদ