Python Language
ढेर
खोज…
परिचय
स्टैक ऑब्जेक्ट्स का एक कंटेनर होता है, जिसे अंतिम-प्रथम प्रथम-आउट (LIFO) सिद्धांत के अनुसार डाला और निकाला जाता है। पुशडाउन स्टैक में केवल दो संचालन की अनुमति है: स्टैक में आइटम को पुश करें, और स्टैक से आइटम को पॉप करें । स्टैक एक सीमित पहुंच डेटा संरचना है - तत्वों को केवल शीर्ष पर ही स्टैक से जोड़ा और हटाया जा सकता है । यहां एक स्टैक की संरचनात्मक परिभाषा है: एक स्टैक या तो खाली है या इसमें एक शीर्ष और बाकी एक स्टैक है।
वाक्य - विन्यास
- स्टैक = [] # स्टैक बनाएँ
- stack.append (ऑब्जेक्ट) # स्टैक के शीर्ष पर ऑब्जेक्ट जोड़ें
- stack.pop () -> ऑब्जेक्ट # स्टैक से शीर्ष सबसे अधिक ऑब्जेक्ट लौटाएं और इसे भी हटा दें
- सूची [-1] -> ऑब्जेक्ट # इसे हटाए बिना शीर्ष सबसे अधिक ऑब्जेक्ट पीक
टिप्पणियों
कंप्यूटर विज्ञान में, एक स्टैक एक अमूर्त डेटा प्रकार है जो दो प्रमुख संचालन के साथ तत्वों के संग्रह के रूप में कार्य करता है: पुश , जो संग्रह में एक तत्व जोड़ता है, और पॉप , जो सबसे हाल ही में जोड़े गए तत्व को हटाता है जो अभी तक हटाया नहीं गया था।
उनके तत्वों तक पहुंचने के तरीके के कारण, स्टैक को लास्ट-इन, फर्स्ट-आउट ( LIFO ) स्टैक के रूप में भी जाना जाता है।
पायथन में एप्स के साथ स्टैक्स के रूप में सूचियों का उपयोग कर सकते हैं append()
pop()
रूप में पुश और pop()
रूप में। दोनों ऑपरेशन निरंतर समय ओ (1) में चलते हैं।
पाइथन के deque
डेटा संरचना का उपयोग स्टैक के रूप में भी किया जा सकता है। सूचियों की तुलना में, deque
रों धक्का और दोनों सिरों से लगातार समय जटिलता के साथ पॉप संचालन अनुमति देते हैं।
सूची ऑब्जेक्ट के साथ एक स्टैक वर्ग बनाना
एक list
ऑब्जेक्ट का उपयोग करके आप हेल्पर विधियों जैसे पीकिंग और चेक के साथ पूरी तरह कार्यात्मक जेनेरिक स्टैक बना सकते हैं यदि स्टैक खाली है। यहां Stack
रूप में list
का उपयोग करने के लिए आधिकारिक अजगर डॉक्स देखें।
#define a stack class
class Stack:
def __init__(self):
self.items = []
#method to check the stack is empty or not
def isEmpty(self):
return self.items == []
#method for pushing an item
def push(self, item):
self.items.append(item)
#method for popping an item
def pop(self):
return self.items.pop()
#check what item is on top of the stack without removing it
def peek(self):
return self.items[-1]
#method to get the size
def size(self):
return len(self.items)
#to view the entire stack
def fullStack(self):
return self.items
एक उदाहरण रन:
stack = Stack()
print('Current stack:', stack.fullStack())
print('Stack empty?:', stack.isEmpty())
print('Pushing integer 1')
stack.push(1)
print('Pushing string "Told you, I am generic stack!"')
stack.push('Told you, I am generic stack!')
print('Pushing integer 3')
stack.push(3)
print('Current stack:', stack.fullStack())
print('Popped item:', stack.pop())
print('Current stack:', stack.fullStack())
print('Stack empty?:', stack.isEmpty())
आउटपुट:
Current stack: []
Stack empty?: True
Pushing integer 1
Pushing string "Told you, I am generic stack!"
Pushing integer 3
Current stack: [1, 'Told you, I am generic stack!', 3]
Popped item: 3
Current stack: [1, 'Told you, I am generic stack!']
Stack empty?: False
पार्सिंग कोष्ठक
ढेर अक्सर पार्सिंग के लिए उपयोग किया जाता है। एक साधारण पार्सिंग कार्य यह जांचना है कि कोष्ठक की एक स्ट्रिंग मेल खा रही है या नहीं।
उदाहरण के लिए, स्ट्रिंग ([])
मेल खा रहा है, क्योंकि बाहरी और आंतरिक ब्रैकेट जोड़े बनाते हैं। ()<>)
मेल नहीं खा रहा है, क्योंकि अंतिम )
का कोई साथी नहीं है। ([)]
भी मेल नहीं खा रहा है, क्योंकि जोड़े पूरी तरह से अन्य जोड़े के अंदर या बाहर होना चाहिए।
def checkParenth(str):
stack = Stack()
pushChars, popChars = "<({[", ">)}]"
for c in str:
if c in pushChars:
stack.push(c)
elif c in popChars:
if stack.isEmpty():
return False
else:
stackTop = stack.pop()
# Checks to see whether the opening bracket matches the closing one
balancingBracket = pushChars[popChars.index(c)]
if stackTop != balancingBracket:
return False
else:
return False
return not stack.isEmpty()