Une pile est une collection ordonnée d'éléments, où l'ajout et la suppression de nouveaux éléments se produisent toujours à la même extrémité. Cette extrémité est souvent appelée le « sommet ». L'extrémité correspondant au haut est appelée le « bas ».
Comme décrit dans l'image, empilez s=(a1,a2,…an-1,an). Le dernier placé sur la pile est un, et le premier qui est sorti de la pile est également un. La pile est donc conforme au principe LIFO.
LIFO
LIFO, c'est-à-dire le principe de tri dernier entré, premier sorti. Il trie en fonction de la durée passée dans la collection. Les éléments les plus récents se trouvent en haut et les éléments plus anciens en bas. Le bas de la pile est important car les éléments situés près du bas de la pile sont stockés le plus longtemps. Les éléments récemment ajoutés sont les premiers à être supprimés.
La raison pour laquelle la pile est importante est qu'elle inverse l'ordre des éléments. L'insertion et la suppression s'effectuent dans l'ordre inverse.
L'exemple le plus typique est que chaque navigateur Web possède un bouton de retour. Lorsque vous naviguez sur le Web, les pages Web sont placées dans une pile (en fait l'URL de la page Web). La page que vous consultez actuellement se trouve en haut et la page que vous consultiez pour la première fois se trouve en bas. Si vous appuyez sur le bouton « Retour », vous parcourrez les pages précédentes dans l'ordre inverse.
Pile d'implémentation Python
# 创建一个空的新栈。 它不需要参数,并返回一个空栈。 class Stack: def __init__(self): self.items = [] # 测试栈是否为空。不需要参数,并返回布尔值。 def isEmpty(self): return self.items == [] # 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。 def push(self, item): self.items.append(item) # 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。 def pop(self): return self.items.pop() # 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。 def peek(self): return self.items[len(self.items)-1] # 返回栈中的 item 数量。不需要参数,并返回一个整数。 def size(self): return len(self.items)
Convertir un nombre décimal en nombre de base arbitraire
Connaître la pile, faites simplement un petit projet pour pratiquer le fonctionnement de base. Convertissez un nombre décimal en n’importe quel nombre de base. En fait, le nombre le plus élevé est hexadécimal (y a-t-il des bases supérieures ?).
def baseConverter(n, base): # n是输入的十进制数字,base为要转化的进制数 digits = '0123456789ABCDEF' #创建一个新栈 s= Stack() # 将每次计算所得的余数添加进栈 while n> 0: rem = n % base s.push(rem) n = n // base # 将余数倒序排列至新字符串 newString = '' while not remstack.isEmpty(): newString = newString + digits[remstack.pop()] return newString
Recommandations associées : "Tutoriel Python"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!