স্ট্যাক এবং কাতার মধ্যে পার্থক্য
কন্টেন্ট
- তুলনা রেখাচিত্র
- স্ট্যাক সংজ্ঞা
- উদাহরণ
- সারি সংজ্ঞা
- উদাহরণ
- স্ট্যাক বাস্তবায়ন
- সারি কার্যকরকরণ
- স্ট্যাক অপারেশন
- একটি কাতারে অপারেশন
- স্ট্যাক অ্যাপ্লিকেশন
- সারি প্রয়োগ
- উপসংহার
স্ট্যাক এবং ক্যু উভয়ই অ-আদিম ডেটা স্ট্রাকচার। স্ট্যাক এবং সারিটির মধ্যে প্রধান পার্থক্যগুলি হ'ল স্ট্যাকটি ডেটা উপাদানগুলিতে অ্যাক্সেস করতে এবং যুক্ত করতে LIFO (প্রথমে শেষের) পদ্ধতি ব্যবহার করে যেখানে ক্যু ডেটা উপাদানগুলিকে অ্যাক্সেস করতে এবং যুক্ত করতে ফিফো (প্রথমত প্রথমত) পদ্ধতি ব্যবহার করে।
অন্যদিকে ডেটা উপাদানগুলিকে ঠেলা ও পপিংয়ের জন্য স্ট্যাকের কেবল এক প্রান্ত খোলা রয়েছে যা উপাত্ত উপাদানগুলিকে সন্ধান এবং অনুসন্ধানের জন্য কুইয়ের উভয় প্রান্ত খোলা রয়েছে।
স্ট্যাক এবং সারি হ'ল ডেটা উপাদানগুলি সঞ্চয় করার জন্য ব্যবহৃত ডেটা স্ট্রাকচার এবং এগুলি বাস্তবে কিছু বাস্তব বিশ্বের সমতুল্য উপর ভিত্তি করে। উদাহরণস্বরূপ, স্ট্যাক হ'ল সিডি'র স্ট্যাক যেখানে আপনি সিডিগুলির স্ট্যাকের শীর্ষস্থানটি দিয়ে সিডি রেখে দিতে পারেন। একইভাবে, থিয়েটারের টিকিটের জন্য সারিটি একটি সারি যেখানে প্রথম স্থানে দাঁড়িয়ে থাকা ব্যক্তি, অর্থাৎ কাতারের সামনের অংশটি প্রথমে পরিবেশন করা হবে এবং আগত নতুন ব্যক্তিটি সারির পিছনে উপস্থিত হবে (সারিটির পিছনের প্রান্তে)।
- তুলনা রেখাচিত্র
- সংজ্ঞা
- মূল পার্থক্য
- বাস্তবায়ন
- অপারেশনস
- অ্যাপ্লিকেশন
- উপসংহার
তুলনা রেখাচিত্র
তুলনার জন্য ভিত্তি | গাদা | কিউ |
---|---|---|
কাজ নীতি | লিফো (সর্বশেষে শেষ) | ফিফো (প্রথম প্রথম প্রথম) |
গঠন | উপাদানগুলি সন্নিবেশ করা এবং মুছতে একই প্রান্তটি ব্যবহৃত হয়। | এক প্রান্তটি সন্নিবেশের জন্য ব্যবহার করা হয়, অর্থাত্, পিছনের প্রান্ত এবং অন্য প্রান্তটি উপাদানগুলি মুছতে ব্যবহৃত হয়, অর্থাত্, সম্মুখ প্রান্তটি। |
ব্যবহৃত পয়েন্টার সংখ্যা | এক | দুটি (সাধারণ সারি ক্ষেত্রে) |
অপারেশন সম্পাদন | পুশ এবং পপ | এনকুই এবং প্রাত্যহিক |
খালি শর্ত পরীক্ষা | শীর্ষ == -1 | সম্মুখ == -1 || সামনের == রিয়ার + 1 |
সম্পূর্ণ শর্ত পরীক্ষা | শীর্ষ == সর্বাধিক - 1 | রিয়ার == সর্বাধিক - 1 |
ভেরিয়েন্ট | এটির কোনও রূপ নেই have | এটিতে বিজ্ঞপ্তি সারি, অগ্রাধিকার সারি, দ্বিগুণ সমাপ্ত সারির মতো রূপ রয়েছে। |
বাস্তবায়ন | সহজ | তুলনামূলকভাবে জটিল |
স্ট্যাক সংজ্ঞা
একটি স্ট্যাক একটি অ-আদিম লিনিয়ার ডেটা কাঠামো। এটি একটি আদেশযুক্ত তালিকা যেখানে নতুন আইটেম যুক্ত করা হয় এবং বিদ্যমান উপাদানটি কেবল একটি প্রান্ত থেকে মুছে ফেলা হয়, তাকে স্ট্যাকের শীর্ষ (টিওএস) হিসাবে ডাকা হয়। যেহেতু কোনও স্ট্যাকের সমস্ত মুছে ফেলা এবং সন্নিবেশ স্ট্যাকের শীর্ষ থেকে করা হয়, যুক্ত করা শেষ উপাদানটি স্ট্যাক থেকে সরানো প্রথমটি হবে। এই কারণেই স্ট্যাককে লাস্ট-ইন-ফার্স্ট-আউট (LIFO) ধরণের তালিকা বলা হয়।
নোট করুন যে স্ট্যাকের মধ্যে প্রায়শই অ্যাক্সেস করা উপাদানটি হ'ল শীর্ষতম উপাদান, যেখানে সর্বশেষ উপলভ্য উপাদানটি স্ট্যাকের নীচে থাকে।
উদাহরণ
আপনারা কেউ বিস্কুট (বা পপপিন) খেতে পারেন। যদি আপনি ধরে নেন তবে কভারের কেবল একটি দিক ছিঁড়ে গেছে, এবং বিস্কুটগুলি একে একে বের করা হবে। এটিকে বলা হয় পপিং, এবং একইভাবে, আপনি যদি কিছু সময়ের জন্য কিছু বিস্কুট সংরক্ষণ করতে চান, তবে আপনি সেগুলি একই ছেঁড়া প্রান্তের মাধ্যমে প্যাকটিতে ফিরিয়ে আনবেন push
সারি সংজ্ঞা
একটি সারি একটি লিনিয়ার ডেটা কাঠামো অ-আদিম ধরণের শ্রেণিতে আসে। এটি অনুরূপ ধরণের উপাদানগুলির সংগ্রহ। নতুন উপাদানগুলির সংযোজনটি রিয়ার এন্ড নামে এক প্রান্তে স্থান নেয়। একইভাবে, বিদ্যমান উপাদানগুলি মুছতে অন্য প্রান্তে ফ্রন্ট-এন্ড বলা হয়, এবং এটি যৌক্তিকভাবে ফার্স্ট ইন ফার্স্ট আউট (ফিফো) ধরণের তালিকার।
উদাহরণ
আমাদের প্রতিদিনের জীবনে আমরা অনেকগুলি পরিস্থিতি অতিক্রম করি যেখানে আমরা কাঙ্ক্ষিত পরিষেবার জন্য অপেক্ষা করতে থাকি, সেখানে আমাদের সেবার জন্য আমাদের অপেক্ষাটির জন্য অপেক্ষা করতে হবে। এই অপেক্ষার সারিটি একটি সারি হিসাবে ভাবা যেতে পারে।
- স্ট্যাক অন্যদিকে LIFO প্রক্রিয়া অনুসরণ করে কুই উপাদানগুলি যুক্ত করতে এবং অপসারণের জন্য ফিফো পদ্ধতি অনুসরণ করে।
- একটি স্ট্যাকে, একই প্রান্তটি উপাদানগুলি সন্নিবেশ করা এবং মুছতে ব্যবহৃত হয়। বিপরীতে, উপাদানগুলি সন্নিবেশ এবং মুছতে কাতারে দুটি পৃথক প্রান্ত ব্যবহৃত হয়।
- স্ট্যাকের কেবলমাত্র একটি উন্মুক্ত প্রান্ত রয়েছে যা স্ট্যাকের শীর্ষটিকে উল্লেখ করার জন্য কেবলমাত্র একটি পয়েন্টার ব্যবহারের কারণ। তবে সারি সামনে এবং কাতারের শেষ প্রান্তটি উল্লেখ করতে দুটি পয়েন্টার ব্যবহার করে।
- স্ট্যাক দুটি অপারেশন সম্পাদন করে যা পুশ এবং পপ হিসাবে পরিচিত হয় যখন কাতারে এটি এনকুই এবং ডিকিউ হিসাবে পরিচিত।
- স্তরের প্রয়োগ কার্যকর করা সহজ যেখানে ক্যু বাস্তবায়ন জটিল।
- সারি সার্কুলার সারি, অগ্রাধিকার সারি, দ্বিগুণ সমাপ্ত সারিতে ইত্যাদির মত বৈকল্পিক রয়েছে বিপরীতে, স্ট্যাকের ভেরিয়েন্ট নেই।
স্ট্যাক বাস্তবায়ন
স্ট্যাকটি দুটি উপায়ে প্রয়োগ করা যেতে পারে:
- স্থির বাস্তবায়ন implementation স্ট্যাক তৈরি করতে অ্যারে ব্যবহার করে। স্ট্যাটিক বাস্তবায়ন যদিও একটি অনায়াস কৌশল তবে এটি নির্মাণের নমনীয় উপায় নয়, কারণ স্ট্যাকের আকারের ঘোষণা প্রোগ্রামের নকশাকালীন করা উচিত, তার পরে আকারটি বৈচিত্র্যযুক্ত হতে পারে না। অতিরিক্তভাবে, স্ট্যাটিক বাস্তবায়ন মেমরির ব্যবহার সম্পর্কে খুব দক্ষ নয়। যেহেতু একটি অ্যারে (স্ট্যাক প্রয়োগের জন্য) অপারেশন শুরুর আগে (প্রোগ্রাম ডিজাইনের সময়) ঘোষণা করা হয়। এখন স্ট্যাকের মধ্যে বাছাই করা উপাদানগুলির সংখ্যা খুব কম হলে স্থিতিযুক্ত বরাদ্দ মেমরি নষ্ট হবে। অন্যদিকে, যদি স্ট্যাকটিতে আরও বেশি সংখ্যক উপাদান সংরক্ষণ করা থাকে তবে আমরা অ্যারের আকার বাড়িয়ে তুলতে পারব না এর ক্ষমতা বাড়ানোর জন্য, যাতে এটি নতুন উপাদানগুলিকে সামঞ্জস্য করতে পারে।
- গতিশীল বাস্তবায়ন একে লিঙ্কযুক্ত তালিকার উপস্থাপনাও বলা হয় এবং তথ্য কাঠামোর স্ট্যাক ধরণের প্রয়োগ করতে পয়েন্টার ব্যবহার করে।
সারি কার্যকরকরণ
সারি দুটি উপায়ে প্রয়োগ করা যেতে পারে:
- স্থির বাস্তবায়ন implementation: অ্যারে ব্যবহার করে যদি একটি সারি কার্যকর করা হয়, তবে আমরা কাতারে যে উপাদানগুলিকে সংরক্ষণ করতে চাইছি তার সঠিক সংখ্যা অবশ্যই আগে নিশ্চিত করা উচিত, কারণ অ্যারের আকারটি ডিজাইনের সময় বা প্রক্রিয়াজাতকরণ শুরুর আগেই ঘোষণা করতে হবে। এই ক্ষেত্রে, অ্যারের শুরুটি কাতারের সামনের অংশে পরিণত হবে এবং অ্যারের শেষ অবস্থানটি সারির পিছনের অংশ হিসাবে কাজ করবে। নিম্নলিখিত ব্যবহারটি অ্যারে ব্যবহার করে প্রয়োগের সময় সম্পূর্ণ উপাদানগুলিকে কাতারে উপস্থিত করে:
সামনের - পিছন + 1
যদি "রিয়ার <ফ্রন্ট" হয় তবে সারিটিতে কোনও উপাদান থাকবে না বা সারিতে সর্বদা খালি থাকবে। - গতিশীল বাস্তবায়ন: পয়েন্টার ব্যবহার করে সারি প্রয়োগ করা, এর প্রধান অসুবিধা হ'ল লিঙ্কযুক্ত উপস্থাপনায় একটি নোড অ্যারে উপস্থাপনায় সংশ্লিষ্ট উপাদানগুলির চেয়ে বেশি মেমরির জায়গা গ্রহন করে। যেহেতু প্রতিটি নোডে কমপক্ষে দুটি ক্ষেত্র ডেটা ফিল্ডের জন্য এবং অন্যটি পরবর্তী নোডের ঠিকানা সংরক্ষণ করার জন্য রয়েছে যেখানে লিঙ্কযুক্ত উপস্থাপনায় কেবল ডেটা ক্ষেত্র রয়েছে। লিঙ্কযুক্ত উপস্থাপনা ব্যবহারের যোগ্যতা তখন স্পষ্ট হয়ে ওঠে যখন প্রয়োজন হয় যখন অন্য উপাদানগুলির একটি দলের মাঝে একটি উপাদান orোকানো বা মুছতে হয়।
স্ট্যাক অপারেশন
স্ট্যাকের উপর চালিত করা যেতে পারে যে মৌলিক ক্রিয়াকলাপগুলি নিম্নরূপ:
- পুশ: স্ট্যাকের শীর্ষে যখন কোনও নতুন উপাদান যুক্ত করা হয় তখন পুশ অপারেশন নামে পরিচিত। স্ট্যাকের কোনও উপাদানকে পুশ করা উপাদানটিকে যুক্ত করার অনুরোধ করে, কারণ নতুন উপাদানটি শীর্ষে সন্নিবেশ করা হবে। প্রতিটি ধাক্কা অপারেশন পরে, শীর্ষ এক এক দ্বারা বৃদ্ধি করা হয়। অ্যারেটি পূর্ণ হলে এবং কোনও নতুন উপাদান যুক্ত করা যায় না, এটিকে স্ট্যাক-ফুল কন্ডিশন বা স্ট্যাক ওভারফ্লু বলা হয়। পুশ অপারেশন - সিতে ফাংশন:
স্ট্যাক বিবেচনা হিসাবে ঘোষণা করা হয়
int stack, শীর্ষ = -1;
অকার্যকর ধাক্কা ()
{
int আইটেম;
যদি (শীর্ষ <4)
{
f ("সংখ্যাটি লিখুন");
স্ক্যান ("% d", & আইটেম);
শীর্ষ = শীর্ষ + 1;
স্ট্যাক = আইটেম;
}
আর
{
f ("স্ট্যাক পূর্ণ!");
}
}
- POP এর: যখন কোনও উপাদান স্ট্যাকের শীর্ষ থেকে মুছে ফেলা হয় এটি পিওপি অপারেশন হিসাবে পরিচিত। স্ট্যাক প্রতিটি পপ ক্রিয়াকলাপ পরে, এক দ্বারা হ্রাস করা হয়। যদি স্ট্যাকের কোনও উপাদান বাকী না থাকে এবং পপটি সম্পাদিত হয়, তবে এর ফলে স্ট্যাক আন্ডারফ্লো অবস্থা হবে যার অর্থ আপনার স্ট্যাকটি খালি। পপ অপারেশন - সি তে কাজ করে:
স্ট্যাক বিবেচনা হিসাবে ঘোষণা করা হয়
int stack, শীর্ষ = -1;
অকার্যকর পপ ()
{
int আইটেম;
যদি (শীর্ষ> = 4)
{
আইটেম = স্ট্যাক;
শীর্ষ = শীর্ষ - 1;
f ("নাম্বারটি মুছে ফেলা হচ্ছে =% d", আইটেম);
}
আর
{
f ("স্ট্যাক খালি");
}
}
একটি কাতারে অপারেশন
কাতারে সঞ্চালন করা যায় এমন প্রাথমিক ক্রিয়াকলাপগুলি হ'ল:
- সারিবদ্ধ: একটি সারিতে একটি উপাদান sertোকানোর জন্য: সিতে ক্রিয়াকলাপের ক্রিয়াকলাপ:
সারি হিসাবে ঘোষণা করা হয়
ইন্টি সারিতে, সামনের = -1 এবং পিছনে = -1;
অকার্যকর অ্যাড ()
{
int আইটেম;
যদি (পিছনে <4)
{
f ("সংখ্যাটি লিখুন");
স্ক্যান ("% d", & আইটেম);
যদি (সামনের == -1)
{
সম্মুখ = 0;
রিয়ার = 0;
}
আর
{
রিয়ার = রিয়ার + 1;
}
কিউ = আইটেম;
}
আর
{
f ("সারি পূর্ণ");
}
}
- dequeue: সারি থেকে কোনও উপাদান মুছতে C সি তে ক্রিয়াকলাপের ক্রিয়াকলাপ:
সারি হিসাবে ঘোষণা করা হয়
ইন্টি সারিতে, সামনের = -1 এবং পিছনে = -1;
অকার্যকর মোছা ()
{
int আইটেম;
যদি (সামনের! = -1)
{
আইটেম = সারি;
যদি (সামনের == পিছন)
{
সম্মুখ = -1;
রিয়ার = -1;
}
আর
{
সম্মুখ = সম্মুখ + 1;
f ("নাম্বারটি মুছে ফেলা হচ্ছে =% d", আইটেম);
}
}
আর
{
f ("সারি ফাঁকা");
}
}
স্ট্যাক অ্যাপ্লিকেশন
- একটি সংকলক মধ্যে পার্সিং।
- জাভা ভার্চুয়াল মেশিন.
- একটি ওয়ার্ড প্রসেসরে পূর্বাবস্থায় ফিরুন।
- একটি ওয়েব ব্রাউজারে পিছনে বোতাম।
- এর জন্য পোস্টস্ক্রিপ্ট ভাষা।
- একটি সংকলকটিতে ফাংশন কল প্রয়োগ করা হচ্ছে।
সারি প্রয়োগ
- ডেটা বাফারস
- অ্যাসিঙ্ক্রোনাস ডেটা স্থানান্তর (ফাইল আইও, পাইপ, সকেট)।
- একটি ভাগ করা সংস্থান (er, প্রসেসর) এ অনুরোধ বরাদ্দ করা হচ্ছে।
- ট্র্যাফিক বিশ্লেষণ।
- একটি সুপার মার্কেটে থাকা ক্যাশিয়ারের সংখ্যা নির্ধারণ করুন।
উপসংহার
স্ট্যাক এবং ক্যু হ'ল লিনিয়ার ডেটা স্ট্রাকচারগুলি নির্দিষ্ট পদ্ধতিতে যেমন ব্যবস্থার কাঠামো, কাঠামো, বাস্তবায়ন, বৈকল্পিকগুলির মধ্যে পৃথক হয় তবে উভয়ই তালিকায় থাকা উপাদানগুলি সঞ্চয় করতে এবং তালিকায় ক্রিয়াকলাপ সম্পাদনের জন্য উপাদানগুলির সংযোজন এবং মোছার জন্য ব্যবহৃত হয়। যদিও সাধারণ কাতারের কিছু সীমাবদ্ধতা রয়েছে যা অন্যান্য ধরণের কিউ ব্যবহার করে পুনরুদ্ধার করা হয়।