এমন কোনও বিদ্যমান ডেটা কাঠামো যা স্থির আকারের হয় এবং কোনও নতুন উপাদান isোকানো হলে পুরানো / শেষ উপাদানটিকে বাইরে বের করে দেবে?


20

আমি এমন একটি ডেটা স্ট্রাকচারের সন্ধান করছি যা কোনও নতুন উপাদান .োকানো থাকলে তার প্রাচীনতম / শেষ উপাদানটিকে বাইরে ঠেলে দেবে। উদাহরণস্বরূপ, Dকাঠামোর প্রতিনিধিত্ব করুন। Dপ্রকারের Number Dডিফল্ট মানগুলির 3 টি উপাদান রয়েছে 1, 2এবং এতে আরম্ভ করা হবে 3

ডি=[1,2,3]

একটি এমন Numberযে মান রয়েছে 5ঢোকানো হয় D, 3কেনার হবে, যখন 1এবং 2সঠিক স্থানান্তরিত হয়।

ডি=[5,1,2]

প্রথম জিনিসটি যা মনে আসে তা একটি অ্যারে হবে, তবে সংজ্ঞাটি ধাক্কা দেওয়ার আচরণকে অন্তর্ভুক্ত করে না।


আচ্ছা সেখানে কোনও অন্তর্নির্মিত ডেটা কাঠামো নেই তবে ডাবলি লিঙ্কযুক্ত লিঙ্কের লিঙ্কযুক্ত তালিকাটি ব্যবহার করে এটি কার্যকর করা সহজ ?
ব্যবহারকারী

1
একটি সারি থেকে উত্তরাধিকারসূত্রে একটি মোড়ক ব্যবহার সম্পর্কে কী? তারপরে আপনি পদ্ধতিটি যুক্ত করুন void push_replace(T val) { pop(); push(val); }
ফ্রান্সেস্কো দন্ডি

T push_replace(T val) { T old = pop(); push(val); return old; }
@ ফ্রেঞ্চসোডোন্ডির

1
এখানে অবশ্যই আছে: আপনি কেবল অনানুষ্ঠানিকভাবে এটি সংজ্ঞায়িত করেছেন; সম্ভবত আপনার জিজ্ঞাসা করা উচিত এটি সুপরিচিত কিনা, একটি সাধারণভাবে সম্মত ইন্টারফেস আছে এবং বাস্তবায়নগুলি উপলব্ধ কিনা (শেষটি কোনও দুর্দান্ত সমস্যা নয়)।
পিজেট্রাইল

@ ওলবাকা আমি সি ++ এর কথা ভাবছি যেখানে pop()কোনও জটিল বিষয় অনুলিপি করার ক্ষেত্রে ব্যতিক্রমী ক্ষেত্রে স্ট্যাক আনওয়াইন্ডিংয়ের কারণে কোনও সমস্যা আসে না, তাই ছাড়ানোর front()আগে আপনার যদি প্রয়োজন হয় তবে আপনাকে আগে ব্যবহার করা উচিত। তবে নিশ্চিত, আপনি যদি ব্যতিক্রম সম্পর্কে চিন্তা না করেন তবে আপনার উপায় আরও ভাল হতে পারে।
ফ্রান্সেসকো দন্ডি

উত্তর:


44

স্থির আকারের সারিগুলি প্রায়শই প্রয়োগ করা হয় যা কিছু লোক বিজ্ঞপ্তিযুক্ত বাফার বলে । আপনি যদি এটির পুরোপুরি সুরক্ষা অপসারণ করেন তবে আপনি পছন্দসই আচরণ পান।

অবশ্যই, অ্যারেতে কোনও আসল ঠেলাঠেলি ঘটবে না - এটি খুব ব্যয়বহুল হবে - তবে এটি বাইরে থেকে এটির মতো দেখাবে


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
রাফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.