Tout d'abord,,Nous devons faire la distinction entre certains concepts et leur relation
Tableau(array) Tableau(list) Liste des liens(linked list) Liste des tableaux(array list) File d'attente(queue) Pile(stack)
listListe
arrayTableau
pythonIntégré au milieulistStructure des données Les types de données stockées peuvent être différents.
Mais il y a un inconvénient. listC'est l'index des données, c'est - à - dire le pointeur Cela nécessite le stockage original des données plus un pointeur vers les données Augmentation de la consommation.
pythonMoyennenumpyDe la bibliothèquearray Stockage d'un seul type de données .
pythonLe tableau n'est pas un type de données de base Mais vous pouvez appelerarrayBibliothèque OunumpyTableau d'utilisation de la bibliothèquearray .
arrayLa Bibliothèque ne peut créer que des tableaux unidimensionnels numpyLes tableaux sont très polyvalents Utilisation recommandéenumpy.
1 import array
2 arr=array.array('i',[1,2,3,4]) #Créer un tableau
3 print(arr,type(arr))
Conversion mutuelle
1 import numpy as np
2 arr=np.array([1,2,3,4]) #Créer un tableau
3 li=arr.tolist() #Tableau converti en liste
4 new_arr=np.array(li) #Liste au tableau
5 print(arr,type(arr))
6 print(li,type(li))
7 print(new_arr,type(new_arr))
#Produits
[1 2 3 4] <class 'numpy.ndarray'>
[1, 2, 3, 4] <class 'list'>
[1 2 3 4] <class 'numpy.ndarray'>
On peut le découvrir.listLes éléments sont séparés par des virgules,arrayIl n'y a pas de symbole entre
QueueFile d'attente -Une structure de tableau qui ne permet qu'une opération de suppression dans un segment et une opération d'insertion à l'autre extrémité
StackPile -Supprimer la structure du tableau à la même extrémité que l'opération insert
Caractéristiques
Queue -Premier entré, premier sorti FIFO first in first out
Stack -Sortie avant et arrière FILO first in last out
Points communs:La pile et la file d'attente sont des tables linéaires avec des opérations limitées
Objet:Pile:Problème de correspondance entre parenthèses pour l'expression,Solution labyrinthe
File d'attente:Les banques font la queue,Problèmes de processus du système d'exploitation,Problème de partenaire de danse
Si votre temps n'est pas très stressant,Et je veux être rapidepythonAmélioration,Le plus important, c'est de ne pas avoir peur de souffrir.,Je vous suggère d'utiliser Wechat:762459510 ,C'est vraiment bien.,Beaucoup de gens progressent rapidement,J'ai besoin que tu n'aies pas peur de souffrir.!Vous pouvez l'ajouter et le voir.~
pythonMise en œuvre de la file d'attente:(Il y a des commentaires)
1 class Node(object):
2 def __init__(self,val): #Valeur entrante du noeud
3 self.next=None #Chaque noeud définit2Propriétés nextPointez vers la position suivante
4 self.val=val # val Valeur du noeud
5
6 class Queue(object):
7 def __init__(self):
8 self.first=None #Chaque définition de file d'attente2Propriétés firstSupprimer l'extrémité
9 self.last=None # lastInsert end
10
11 def enqueue(self,n):
12 n=Node(n)
13 if(self.first==None): #Si la file d'attente est vide
14 self.first=n
15 self.last=n
16 else: #Si la file d'attente n'est pas vide
17 self.last.next=n #L'extrémité d'insertion pointe versn
18 self.last=n #La dernière valeur à l'extrémité d'insertion estn
19
20 def dequeue(self):
21 if (self.first==None):
22 return None
23 else:
24 reval=self.first.val
25 self.first=self.first.next #Spécifiez le premier à l'extrémité de suppression comme suivant
26 return reval
27 def allquit(self): # allquitAction:Les éléments de la file d'attente sont placés danslistFacile à imprimer
28 alist=[]
29 while (self.first!=None): #Cycle
30 temp=self.first.val #EtdequeueMême opération pour
31 self.first=self.first.next
32 alist.append(temp)
33 return alist
34
35 if __name__ == "__main__":
36 q=Queue()
37 q.enqueue(1)
38 q.enqueue(2)
39 q.enqueue(3)
40 q.dequeue()
41 print(q.allquit())
pythonMise en œuvre de la pile:(Il y a des commentaires)
1 class Node(object):
2 def __init__(self,val):
3 self.next=None
4 self.val=val
5 class Stack(object):
6 def __init__(self):
7 self.top=None #EtqueueLes différents Inserts de suppression de pile sont à une extrémité Donc une seule position est définie
8
9 def push(self,n):
10 n=Node(n)
11 if(self.top==None): #Si la pile est vide
12 self.top=n
13 else:
14 n.next=self.top #L'élément insert suivant est l'élément top treillis
15 self.top = n #L'élément de la grille supérieure est la valeur d'insertion
16
17 def pop(self): #Supprimer les éléments de la grille supérieure
18 if(self.top==None): #Si la pile est vide
19 return None
20 else:
21 temp=self.top.val
22 self.top=self.top.next #Le nouvel élément top treillis est le dernier de l'ancien
23 return temp
24
25 def allquit(self): #Méthode de la pile d'impression
26 alist=[]
27 while(self.top!=None): #Cycle
28 temp=self.top.val #Etpop()La méthode fonctionne de la même façon
29 self.top=self.top.next
30 alist.append(temp)
31 print(alist)
32
33 if __name__== "__main__" :
34 s=Stack()
35 s.push(1)
36 s.push(3)
37 s.push(5)
38 s.pop()
39 s.allquit()