কম্পিউটার

পাইথনে স্ট্যাক এবং সারি হিসাবে তালিকা ব্যবহার করা


এই নিবন্ধে, আমরা পাইথন 3.x-এ স্ট্যাক এবং কিউ স্ট্রাকচার সম্পর্কে জানব। বা তার আগে. এখানে আমরা এই ডেটা স্ট্রাকচারের মধ্যে কাজ এবং পরিবর্তন নিয়ে আলোচনা করব -

এর মধ্যে রয়েছে −

  1. সন্নিবেশ অপারেশন (ধাক্কা, এনকিউ)
  2. মোছা অপারেশন (পপ, ডিকিউ)
  3. ডিসপ্লে / ট্রাভার্সিং অপারেশন

পূর্বশর্ত :তালিকা ও তালিকা কার্যক্রম

সম্পর্কিত ডেটা স্ট্রাকচার :তালিকা ম্যানিপুলেশন

সম্পর্কিত ছবি

পাইথনে স্ট্যাক এবং সারি হিসাবে তালিকা ব্যবহার করা

স্ট্যাক

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

একটি স্ট্যাকের উপর ক্রিয়াকলাপ -

  • এলিমেন্টের সংযোজন/সংযোজন:এটি যোগ করা আইটেমের সংখ্যার দ্বারা স্ট্যাকের আকার বৃদ্ধি করে এবং সংযোজন উপরের প্রান্তে অর্থাৎ স্ট্যাকের শীর্ষে ঘটে।
  • এলিমেন্টের মুছে ফেলা / অপসারণ - এর মধ্যে দুটি শর্ত জড়িত - যদি স্ট্যাকটি খালি থাকে তবে মুছে ফেলার জন্য কোনো উপাদান উপলব্ধ নেই, যেমন আন্ডারফ্লো স্ট্যাকের মধ্যে ঘটে বা যদি স্ট্যাকের মধ্যে কিছু উপাদান থাকে তাহলে শীর্ষে উপস্থিত উপাদানটি সরানো হবে . এটি সরানো উপাদানের সংখ্যা দ্বারা স্ট্যাকের আকার হ্রাস করে।
  • ট্র্যাভার্সিং/প্রদর্শন − এর মধ্যে স্ট্যাকের প্রতিটি উপাদান পরিদর্শন করা এবং স্ক্রিনে প্রদর্শন করা জড়িত৷

আমরা পিকের একটি অতিরিক্ত কার্যকারিতাও সন্নিবেশ করতে পারি যেমন স্ট্যাকের শীর্ষে মান পুনরুদ্ধার করা।

স্ট্যাকের বৈশিষ্ট্য

  • সন্নিবেশ ক্রম সংরক্ষিত।
  • স্ট্যাকে ডুপ্লিকেসি অনুমোদিত৷
  • অনুরূপ ডেটা-টাইপ স্টোরেজ।
  • পার্সিং অপারেশনে অত্যন্ত উপযোগী।

উদাহরণ কোড

def isEmpty(stk): # checks whether the stack is empty or not
   if stk==[]:
      return True
   else:
      return False

def Push(stk,item): # Allow additions to the stack
   stk.append(item)
   top=len(stk)-1

def Pop(stk):
   if isEmpty(stk): # verifies whether the stack is empty or not
      print("Underflow")
   else: # Allow deletions from the stack
      item=stk.pop()
      if len(stk)==0:
         top=None
      else:
         top=len(stk)
         print("Popped item is "+str(item))

def Display(stk):
   if isEmpty(stk):
      print("Stack is empty")
   else:
      top=len(stk)-1
      print("Elements in the stack are: ")
      for i in range(top,-1,-1):
         print (str(stk[i]))

# executable code
if __name__ == "__main__":
   stk=[]
   top=None
   Push(stk,1)
   Push(stk,2)
   Push(stk,3)
   Push(stk,4)
   Pop(stk)
   Display(stk)

উপরের কোডটি পাইথন 3.x-এ স্ট্যাক কার্যকারিতা প্রয়োগ করে। বা তার আগে. আমরা একাধিক if-else স্টেটমেন্ট ব্যবহার করে ব্যবহারকারীকে পছন্দ প্রদান করে একটি মেনু-চালিত প্রোগ্রাম তৈরি করতে পারি। উভয় ক্ষেত্রেই স্ট্যাক তৈরির ধারণা একই থাকে।

নীচে দেখানো পর্দা উপরের প্রোগ্রাম দ্বারা উত্পাদিত আউটপুট চিত্রিত. আমরা ব্যবহারকারী-ভিত্তিক ইনপুট সিস্টেমের জন্য ইনপুট() ফাংশন ব্যবহার করতে পারি (এখানে আমি স্ট্যাটিক ইনপুট প্রয়োগ করেছি)

আউটপুট

Popped item is 4
Elements in the stack are:
3
2
1

সারি

স্ট্যাকগুলিতে, বস্তুগুলি একের পর এক সংরক্ষণ করা হয়, এবং এই বস্তুগুলি আগমনের ক্রমে সরানো হয় অর্থাৎ FIFO ধারণা অনুসরণ করা হয়। FIFO মানে ফার্স্ট ইন ফার্স্ট আউট টাইপ বিন্যাস সারি ডেটা স্ট্রাকচারে অনুসরণ করা হয়।

একটি সারিতে ক্রিয়াকলাপ

  • উপাদানের সংযোজন/সংযোজন − এটি যোগ করা আইটেমের সংখ্যা দ্বারা সারির আকার বৃদ্ধি করে এবং সংযোজনটি পিছনের প্রান্তে অর্থাৎ সারির পিছনের অংশে ঘটে।

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

  • ট্রাভার্সিং /ডিসপ্লে করা - এর মধ্যে স্ট্যাকের প্রতিটি উপাদান পরিদর্শন করা এবং স্ক্রিনে প্রদর্শন করা জড়িত৷

আমরা পিকের একটি অতিরিক্ত কার্যকারিতাও সন্নিবেশ করতে পারি যেমন সারির পিছনে/শেষে মান পুনরুদ্ধার করা।

সারির বৈশিষ্ট্য

  • সন্নিবেশ ক্রম সংরক্ষিত।
  • সারিতে ডুপ্লিকেসি অনুমোদিত।
  • অনুরূপ ডেটা-টাইপ স্টোরেজ।
  • সিপিইউ টাস্ক অপারেশন পার্স করার ক্ষেত্রে অত্যন্ত উপযোগী।

উদাহরণ কোড

#Adding elements to queue at the rear end
def enqueue(data):
   queue.insert(0,data)

#Removing the front element from the queue
def dequeue():
   if len(queue)>0:
      return queue.pop()
   return ("Queue Empty!")

#To display the elements of the queue
def display():
   print("Elements on queue are:");
   for i in range(len(queue)):
      print(queue[i])

# executable code
if __name__=="__main__":
   queue=[]
   enqueue(5)
   enqueue(6)
   enqueue(9)
   enqueue(5)
   enqueue(3)
   print("Popped Element is: "+str(dequeue()))
   display()

উপরের কোডটি পাইথন 3.x-এ সারির কার্যকারিতা প্রয়োগ করে। বা তার আগে. আমরা একাধিক if-else স্টেটমেন্ট ব্যবহার করে ব্যবহারকারীকে পছন্দ প্রদান করে একটি মেনু-চালিত প্রোগ্রাম তৈরি করতে পারি। উভয় ক্ষেত্রেই সারি তৈরির ধারণা একই থাকে।

নীচে দেখানো পর্দা উপরের প্রোগ্রাম দ্বারা উত্পাদিত আউটপুট চিত্রিত. আমরা ব্যবহারকারী-ভিত্তিক ইনপুট সিস্টেমের জন্য ইনপুট() ফাংশন ব্যবহার করতে পারি (এখানে আমি স্ট্যাটিক ইনপুট প্রয়োগ করেছি)

আউটপুট

Popped item is: 5
Elements on queue are:
3
5
9
6

উপসংহার

এই নিবন্ধে, আমরা পাইথন 3.x-এ স্ট্যাক ও কিউ ডেটা স্ট্রাকচার কীভাবে বাস্তবায়ন করতে হয় তা শিখেছি। বা তার আগে. আপনি অন্য কোনো প্রোগ্রামিং ভাষায় স্ট্যাক/কিউ ডিটেক্টর প্রোগ্রাম বাস্তবায়ন করতে একই অ্যালগরিদম প্রয়োগ করতে পারেন।


  1. পাইথনে স্ট্যাক ব্যবহার করে প্রদত্ত পোস্টঅর্ডার ট্রাভার্সাল থেকে একটি BST তৈরি করুন

  2. পাইথন এবং স্ক্র্যাপি ব্যবহার করে ওয়েব স্ক্র্যাপিং?

  3. পাইথন ব্যবহার করে উইন্ডোজে অ-লুকানো ফাইল এবং ডিরেক্টরিগুলি কীভাবে তালিকাভুক্ত করবেন?

  4. একটি ম্যাকে পাইথন 3 আপগ্রেড করা এবং ব্যবহার করা