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



সি-তে লিংকড লিস্টে তাঁর ব্লগ আপনাকে সি-তে লিঙ্কযুক্ত তালিকার ডেটা কাঠামোর সাথে পরিচয় করিয়ে দেয় এবং উদাহরণগুলির সাথে লিঙ্কযুক্ত তালিকার প্রয়োগটি বিস্তারিতভাবে বুঝতে আপনাকে সহায়তা করে।

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

সি তে লিঙ্কযুক্ত তালিকা কী?

একটি লিঙ্কযুক্ত তালিকা একটি লিনিয়ার ডেটা কাঠামো। প্রতিটি লিঙ্কযুক্ত তালিকার দুটি অংশ থাকে, ডাটা বিভাগ এবং তালিকার পরবর্তী উপাদানগুলির ঠিকানা ধারণ করে এমন ঠিকানা বিভাগ, যা নোড বলে।





লিঙ্কযুক্ত তালিকার আকার নির্দিষ্ট করা হয়নি, এবং তালিকার কোনও স্থানে ডেটা আইটেম যুক্ত করা যেতে পারে। অসুবিধাটি হ'ল কোনও নোডে পৌঁছতে আমাদের অবশ্যই প্রথম নোড থেকে নোডের সমস্ত পথ যেতে হবে। লিঙ্কযুক্ত তালিকাটি একটি অ্যারের মতো তবে অ্যারের থেকে পৃথক, এটি মেমোরিতে ক্রমানুসারে সংরক্ষণ করা হয় না।

সেলেনিয়াম ওয়েবড্রাইভারে হাইব্রিড কাঠামো

লিঙ্কযুক্ত তালিকার সর্বাধিক জনপ্রিয় প্রকারগুলি হ'ল:



  1. একক লিঙ্ক তালিকা
  2. সন্দেহজনকভাবে লিঙ্ক তালিকা

লিঙ্কযুক্ত তালিকার উদাহরণ

ফর্ম্যাট: [ডেটা, ঠিকানা]

মাথা -> [3,1000] -> [43,1001] -> [21,1002]



উদাহরণস্বরূপ, 43 নম্বরটি অবস্থান 1000 এ উপস্থিত এবং ঠিকানাটি পূর্ববর্তী নোডে উপস্থিত রয়েছে। লিঙ্কযুক্ত তালিকাটি এভাবে উপস্থাপন করা হয়।

বেসিক লিঙ্কযুক্ত তালিকার কার্যাদি

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

# অন্তর্ভুক্ত # অন্তর্ভুক্ত শূন্য তৈরি () শূন্যস্থান প্রদর্শন () শূন্য প্রবেশদান_বেগিন () শূন্য প্রবেশনা_পোস () শূন্য প্রবেশনা_পোস () শূন্যতা মুছে ফেলা_বেগিন () শূন্যতা মুছে ফেলা_) () শূন্য মোছা_পোস () স্ট্রাক নোড {ইনট ইনস্ট্রাক্ট নোড * পরের} স্ট্রাক্ট নোড * শুরু = নুল ইনট মেইন () choice অন্তর্গত পছন্দ (1) {প্রিন্টফ ('এন মেনু এন') প্রিন্টফ ('এন 1. ক্রিট এন') প্রিন্টফ ('এন 2. ডিসপ্লে এন') প্রিন্টফ ('এন 3. এ প্রবেশ করুন প্রারম্ভিক এন ') প্রিন্টফ (' এন 4. শেষে এন 'সন্নিবেশ করান) প্রিন্টফ (' এন এন 5. নির্দিষ্ট অবস্থান এন অন্তর্ভুক্ত করুন ') প্রিন্টফ (' এন 6. সূচনা এন থেকে মুছুন) মুদ্রণ ('এন 7. মুছে ফেলুন প্রান্ত থেকে এন)) প্রিন্টফ ('এন 8. নির্দিষ্ট অবস্থান থেকে মুছুন এন') প্রিন্টফ ('এন 9.এক্সিট এন') প্রিন্টফ ('এন ----------------- --------------------- n ') প্রিন্টফ (' আপনার পছন্দ লিখুন: টি ') স্ক্যানফ ('% d ', এবং পছন্দ) স্যুইচ (পছন্দ) {কেস 1 : তৈরি () ব্রেক কেস 2: ডিসপ্লে () ব্রেক কেস 3: ইনসার্ট_বেগিন () ব্রেক কেস 4: ইনসার্ট_েন্ড () ব্রেক কেস 5: ইনসার্ট_পোস () ব্রেক কেস 6: ডিলিট_বেগিন () ব্রেক কেস 7: ডিলিট_েন্ড () ব্রেক কেস 8: ডিলিট_পোস () ব্রেক কেস 9: প্রস্থান (0) ব্রেক ডিফল্ট: প্রিন্টফ ('এন ভুল চয়েস: এন') ব্রেক}} রিটার্ন 0} voi d তৈরি করুন () {স্ট্রাক নোড * টেম্প, * পিটিআর টেম্প = (স্ট্রাক্ট নোড *) ম্যালোক (সাইজফফ (স্ট্রাক্ট নোড)) যদি (টেম্প == নুল) {প্রিন্টফ ('মেমরি স্পেসের নট: এন') প্রস্থান (0) } প্রিন্টফ ('n নোডের জন্য ডেটা মান প্রবেশ করান: t') স্ক্যানফ ('% d', & টেম্প-> তথ্য) টেম্প-> পরের = NULL যদি (শুরু == ন্যূনল) {শুরু = অস্থায়ী} অন্য {পিটিআর = শুরু (ptr-> পরবর্তী! = NULL) {ptr = ptr-> পরের} ptr-> পরের = টেম্পে} oid শূন্য প্রদর্শন () {স্ট্রাক্ট নোড * পিটিআর যদি (শুরু == NULL) {প্রিন্টফ ('n তালিকা খালি থাকে: এন ') ফিরুন} অন্য {পিটিআর = প্রার্টফ স্টার্ট (' n তালিকার উপাদানগুলি হ'ল: এন ') যখন (পিটিআর! = এনএলএল) {প্রিন্টফ ('% ডিটি ', পিটিআর-> তথ্য) পিটিআর = পিটিআর-> পরবর্তী}}} অকার্যকর insert_begin () {স্ট্রাক্ট নোড * টেম্প টেম্প = (স্ট্রাক্ট নোড *) মেলোক (সাইজফফ (স্ট্রাক্ট নোড)) যদি (টেম্প == NULL) {প্রিন্টফ ('মেমরি স্পেসের নট: এন') ফিরে আসে} প্রিন্টফ ('n প্রবেশ করুন নোডের জন্য ডেটা মান: t ') স্ক্যান্ফ ('% d ', & টেম্প-> তথ্য) টেম্পল>> পরবর্তী = NULL যদি (শুরু == ন্যূনল)) শুরু = টেম্পের} অন্য {টেম্প-> পরের = শুরু শুরু = অস্থায়ী }} অকার্যকর insert_end () {স্ট্রাক্ট নোড * টেম্প, * পিটিআর টেম্প = (স্ট্রাক্ট নোড *) ম্যালোক (সাইজফ (স্ট্রাক্ট নোড)) যদি (অস্থায়ী == NULL) {প্রিন্টফ ('মেমরি স্পেসের নট: এন') ফিরে আসে} পি rintf ('n নোডের জন্য ডেটা মান প্রবেশ করান: t') স্ক্যানফ ('% d', & টেম্প-> তথ্য) টেম্প-> পরবর্তী = NULL যদি (আরম্ভ == NULL) {শুরু = অস্থায়ী} অন্য {পিটিআর = শুরু করুন (ptr-> পরের! = NULL) {ptr = ptr-> পরের} পিটিআর-> পরের = টেম্পে} oid শূন্য Insert_pos () {স্ট্রাক্ট নোড * পিটিআর, * টেম্প ইন্টি, পোস্ট টেম্প = (স্ট্রাক্ট নোড *) ম্যালোক ( আকারের (স্ট্রাক্ট নোড)) যদি (অস্থায়ী == NULL) {প্রিন্টফ ('মেমরি স্পেসের নট: এন') ফিরে আসে} মুদ্রণফ ('n নতুন নোড toোকানোর জন্য অবস্থান লিখুন: t') স্ক্যানফ ('% d' , & পোস্ট) প্রিন্টফ ('n নোডের ডেটা মান প্রবেশ করান: t') স্ক্যানফ ('% d', & টেম্প-> তথ্য) টেম্প-> পরের = NULL যদি (পোস্ট == 0) {টেম্প-> পরবর্তী = শুরু = সাময়িক {অন্য {এর জন্য (i = 0, ptr = startinext if (ptr == NULL) {printf ('n অবস্থান পাওয়া যায়নি: [যত্ন সহকারে পরিচালনা করুন] n') ফিরে আসুন next} temp-> পরের = পিটিআর-> পরবর্তী পিটিআর -> পরের = অস্থায়ী delete} শূন্যতা মোছা_বেগিন () {স্ট্রাক্ট নোড * পিটিআর যদি (পিটিআর == নুল) {প্রিন্টফ ('এনলিস্ট খালি: n') ফিরে আসুন return অন্য {পিটিআর = শুরু শুরু = শুরু-> পরবর্তী প্রিন্টফ (' n মুছে ফেলা উপাদানটি হ'ল:% dt ', ptr-> তথ্য) ফ্রি (পিটিআর) oid oid শূণ্য মুছে ফেলা_end () {স্ট্রাক্ট নোড * টেম্প, * পিটিআর যদি (শুরু == ন্যূনল) {প্রিন্টফ (' এনলিস্ট খালি: ') প্রস্থান (0) } অন্যথায় যদি (start-> পরের == NULL) {ptr = start start = NULL printf ('n মুছে ফেলা উপাদানটি হ'ল:% dt', ptr-> তথ্য) ফ্রি (পিটিআর) {অন্য {পিটিআর = শুরু করার সময় (ptr- > পরের! i int i, পোষ্ট স্ট্রাক্ট নোড * টেম্প, * পিটিআর যদি (শুরু == NULL) {প্রিন্টফ ('n তালিকা খালি: n') প্রস্থান (0)} অন্য {মুদ্রণযোগ্য ('n নোডের অবস্থান মুছে ফেলার জন্য প্রবেশ করুন : t ') স্ক্যানফ ('% d ', এবং পোস্ট) যদি (pos == 0) {পিটিআর = শুরু শুরু = শুরু-> পরবর্তী প্রিন্টফ (' n মুছে ফেলা উপাদান:% dt ', পিটিআর-> তথ্য) ফ্রি (পিটিআর) )} অন্য {পিটিআর = এর জন্য শুরু করুন (i = 0inext যদি (পিআরটি == এনএলএল) {প্রিন্টফ ('এনপজিশন পাওয়া যায় নি: এন') ফিরে আসুন}} টেম্প-> পরবর্তী = পিটিআর-> পরবর্তী প্রিন্টফ ('n মুছে ফেলা উপাদানটি হ'ল: % dt ', ptr-> তথ্য) ফ্রি (পিটিআর)}}}

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

স্ট্রাক নোড {ইন্ট তথ্য স্ট্রাক নোড * পরবর্তী next

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

  • সৃষ্টি()
  • প্রদর্শন ()
  • insert_begin ()
  • insert_end ()
  • ] সন্নিবেশ_পোস ()
  • মোছা_বেগিন ()
  • মুছে দিন_) ()
  • মুছুন_পোস ()

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

কি ইনপুট সরবরাহ করা হয় তার উপর ভিত্তি করে ফাংশনটি ডাকা হবে। এর পরে, আমাদের বিভিন্ন ফাংশন রয়েছে যা সমাধান করা দরকার। আসুন এই ফাংশনগুলির প্রতিটি একবার দেখে নেওয়া যাক।

ফাংশন তৈরি করুন

প্রথমত, লিঙ্কযুক্ত তালিকা তৈরি করতে একটি ক্রিয়াকলাপ রয়েছে। লিঙ্কযুক্ত তালিকাটি তৈরি করার এটিই মূল উপায়। আমাদের কোডটি দেখতে দিন।

অকার্যকর তৈরি () {স্ট্রাক্ট নোড * টেম্প, * পিটিআর প্রিন্টফ ('n নোডের জন্য ডেটা মান প্রবেশ করান: t') স্ক্যানফ ('% d', & টেম্প-> তথ্য) টেম্প-> পরের = NULL যদি (শুরু == নাল) ) {start = temp} অন্য {পিটিআর = শুরু করার সময় (পিটিআরটি>> পরবর্তী! = এনইউএল) {পিটিআর = পিটিআর-> পরের} পিটিআর-> পরের = অস্থায়ী}

আউটপুট

সন্নিবেশ - লিঙ্কযুক্ত তালিকা - এডুরেকা

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

এর জন্য, আমরা পিটিআরটি শুরু মান এবং অবধি ট্র্যাভার করি ptr-> next = নাল । আমরা তারপর নিয়োগ ptr-> পরের টেম্পের ঠিকানা একইভাবে, শুরুতে সন্নিবেশ করানোর জন্য, শেষে সন্নিবেশ করানো এবং নির্দিষ্ট স্থানে সন্নিবেশ করার জন্য কোড দেওয়া আছে।

প্রদর্শন ফাংশন

ডিসপ্লে ফাংশনের কোড এখানে।

অকার্যকর প্রদর্শন () {স্ট্রাক্ট নোড * পিটিআর যদি (আরম্ভ == এনএলএল) {প্রিন্টফ ('এনলিস্ট খালি: n') ফিরে আসুন} অন্য {পিটিআর = প্রিন্টফার্ট ('n তালিকার উপাদানগুলি হল: এন') যখন (পিটিআর! = নাল) {প্রিন্টফ ('% ডিটি', পিটিআর-> তথ্য) পিটিআর = পিটিআর-> পরবর্তী}}}

আউটপুট

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

ফাংশন মুছুন

লিঙ্কযুক্ত তালিকা থেকে একটি নোড মুছতে এখানে কোড স্নিপেট।

অকার্যকর মোছা_পোস () {ইন্ট আই, পোস্ট স্ট্রাক্ট নোড * টেম্পে, * পিটিআর যদি (শুরু == নুল) {প্রিন্টফ ('n তালিকা খালি: n') প্রস্থান (0)} অন্য {প্রিন্টফ ('n এর অবস্থান লিখুন নোড মুছে ফেলা হবে: t ') স্ক্যানফ ('% d ', এবং পোস্ট) যদি (পজ == 0) tr পিটিআর = শুরু শুরু = শুরু-> পরবর্তী প্রিন্টফ (' n মুছে ফেলা উপাদানটি:% dt ', ptr-> তথ্য ) ফ্রি (পিটিআর)} অন্য {পিটিআর = এর জন্য শুরু করুন (i = 0inext যদি (পিআরটি == এনএলএল) {প্রিন্টফ ('এনপজিশন পাওয়া যায় নি: এন') ফিরে আসুন}} টেম্প-> পরের = পিটিআর-> পরবর্তী প্রিন্টফ ('এন মোছা উপাদানটি হ'ল:% dt ', ptr-> তথ্য) ফ্রি (পিটিআর)}}}

আউটপুট

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

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

দ্বিগুণ লিঙ্কযুক্ত তালিকা

এটিকে দ্বিগুণ সংযুক্ত তালিকা বলা হয় কারণ দুটি রয়েছে পয়েন্টার , পরবর্তী নোডের একটি বিন্দু এবং পূর্ববর্তী নোডের অন্যান্য পয়েন্ট। দ্বিগুণ সংযুক্তে সম্পাদিত ক্রিয়াকলাপগুলি এককভাবে সংযুক্ত তালিকার মতো। বেসিক অপারেশনের কোড এখানে।

# অন্তর্ভুক্ত স্ট্রোক নোড টাইপডেফ স্ট্রাক্ট নোড * পিটিআরটিওনড টাইপডেফ পিটিআরটিওনোড তালিকা টাইপডেফ পিটিআরটো নোড পজিশন স্ট্রোক নোড {ইন্ট ই পজিশন পূর্ববর্তী পজিশন} শূন্য সন্নিবেশ (ইনট এক্স, লিস্ট এল, পজিশন পি) osition পজিশন টিএমপিএল টিএমপিএল = স্ট্রোক নোড * (আকারের (স্ট্রাক্ট নোড)) যদি (TmpCell == NULL) প্রিন্টফ ('স্পেসেনের বাইরে স্মৃতি') অন্য {TmpCell-> e = x TmpCell-> পূর্ববর্তী = p TmpCell-> পরের = p-> পরের p-> পরের = টেম্পসেল} oid শূন্যতা মুছুন (অন্তর্নির্মিত x, তালিকা l) osition অবস্থান p, p1, p2 p = (x, l) সন্ধান করুন যদি (পি! = নাল) {পি 1 = পি -> পূর্ববর্তী পি 2 = পি -> পরের পি 1 - > পরের = পি -> পরবর্তী যদি (p2! = NULL) // নোড শেষ নোড না হয় তবে পি 2 -> পূর্ববর্তী = পি -> পূর্ববর্তী print অন্য প্রিন্টফ ('উপাদানটির অস্তিত্ব নেই !!! n') oid শূন্য প্রদর্শন (তালিকা l) {প্রিন্টফ ('তালিকার উপাদানগুলি হল ::') পজিশন পি = l-> এর পরের (p! = NULL) {প্রিন্টফ ('% d ->', পি-> ই) পি = পি- > পরের}} int প্রধান () {int x, পোজ, সি, আই তালিকা l, l1 l = (স্ট্রাক্ট নোড *) ম্যালোক (আকারের (স্ট্রাক্ট নোড)) l-> পূর্ববর্তী = নুল l-> পরের = ন্যূনাল তালিকা পি = l প্রিন্টফ ('ডাবলির সাথে লিঙ্কযুক্ত লিস্টের তালিকা বাস্তবায়ন) IST ADTnn ') do {printf (' nn1) করুন। তৈরি করুন 2. মুছে ফেলুন 3. প্রদর্শন করুন 4. পছন্দটি পছন্দ করুন :: ') স্ক্যানফ ('% d ', & সি) স্যুইচ (সিএইচ) {কেস 1: পি = এল প্রিন্টফ (' elementোকানোর জন্য উপাদানটি লিখুন :: ') স্ক্যানফ ('% ডি', এবং এক্স) প্রিন্টফ ('উপাদানটির অবস্থান লিখুন ::') স্ক্যানফ ('% ডি', এবং পোস্ট) এর জন্য (i = 1 iপরের break সন্নিবেশ (x, l, পি) বিরতি কেস 2: পি = এল প্রিন্টফ ('মোছার জন্য উপাদানটি লিখুন ::') স্ক্যানফ ('% ডি', এবং এক্স) মুছে ফেলুন (x, পি) ব্রেক ব্রেক 3: প্রদর্শন (ঠ) বিরতি}} যখন (সিএইচএইচ)<4) } 

আউটপুট

k এর অর্থ ক্লাস্টারিং উদাহরণ ডেটাসেট

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

আমি আশা করি আপনি সিতে একা এবং দ্বিগুণ সংযুক্ত তালিকায় বেসিক অপারেশনগুলি কীভাবে সম্পাদন করবেন তা বুঝতে পেরেছেন

আপনি যদি জাভাতে লিঙ্কযুক্ত তালিকা শিখতে চান তবে এখানে একটি ।

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