Cette section commence la seconde structure de données, les piles et les files d'attente:
Stack Basic Operation Structure de stockage
File d'attente:
File d'attente de la structure de stockage
Survey: Structure de données - Table linéaire
La pile
Nous sommes une structure de données avancée similaire s'appelle des piles et des piles sous forme de carte linéaire limitée pour insérer et supprimer une opération à la fin de la queue. Nous appelons une tête qui permet d'insérer et de supprimer la pile, et l'autre extrémité s'appelle le bas de la pile. Stack sans éléments de données sont appelés piles et piles vierges sont également appelés backpendens linéaires, appelés structure Lifo.
La première fois est une carte linéaire, ce qui signifie que l'élément de pile a une relation linéaire, ce qui signifie la relation du lecteur de transition, mais c'est une carte linéairesurtout.
La position spéciale consiste à limiter l'insertion et à supprimer cette carte linéaire, toujours faite sur le dessus de la pile. Cela crée également: le bas de la pile est fixe et la pile la plus avancée ne peut être qu'au bas de la pile.
Insérer la pile est appelée piles; La manipulation Supprimer la pile est appelée prise.
1. Pile de structure de stockage
La structure de stockage de données utilisée pour stocker la pile d'éléments de données est appelée la structure de stockage de la pile.
La pile est un cas particulier de la carte linéaire, de sorte que la structure de stockage de la pile réellement éclairée de la structure de stockage de table linéaire . Nous sommes appelés la pile d'ordonnance. La forme linéaire est déployée dans un tableau. Pour cette pile ne peut que insérer le panneau linéaire supprimé, utilisez un index de matrice sur 0 (bas de la pile qui ne change pas, changez simplement le haut du compartiment.Empilement de piles) comme des piles. Le fond convient.
La commande est définie comme suit:
1.2 STAILLE DE STRONTAGE DE STOCKAGE
Réglez le haut de la pile en haut de la table, stockez la pile de pile avec un lien liste.
2. Activité
2.1 SO SPAILLE
pour les commandes, il y a 4 facteurs, y compris deux États spéciaux et deux activités.
typedef struct{ int data[maxsize]; //定义一个数组大小为maxsize的数组,用来存放栈中数据元素 int top; //栈顶指针}SqStack; //顺序栈定义
Statut spécial:
1) Pile vierge: ST.TOP == -1, et certains ST.TOP = 0 moyens Compartiment classés en blanc, ce temps est le Position supérieure de 0.
2) Stack Full State: St.Top == maxsize-1 signifie une pile complète. Maxsize est le nombre de plus gros éléments de la pile et maxsize-1 est l'emplacement de la pile de la pile d'éléments supérieurs dans la matrice, car la position de la matrice commence à 0,
typedef struct LNode{ int data; //数据域 struct LNode *next; //指针域}LNode; //链栈结点
] Activités:
Ordre des piles et des arrangementsLe mari est fait en haut de la pile, alors changez simplement la position supérieure de la pile. Allez à la pile et sortez de la pile.
1) Mari initialisé:
2) Chirurgie perforée:3) Découvrez les opérations de pile:
Machine et INREST correspondent à la Fonctionnement correspondant
4) Version simplifiée:
2.2 Fonctionnement de la pile de cordes
void initStack(SqStack &st) //初始化栈{ st.top = -1; //栈顶指针设置为-1}
] Correspondant à la pile de commande et la pile de chaîne comporte quatre éléments , dont deux États et deux activités.
int push(SqStack &st,int x){ if(st.top == maxsize-1) //判断栈是否满,如果满,则不能进栈 return 0; ++(st.top); //栈顶指针位置加1 st.data[st.top] = x //x进栈,放在st.top位置 return 1;}
1) Pile vide: LST - & GT; Suivant == NULL, signifie la pile vide lorsque la pile n'a pas de successeur.
2) Pile Full: Si l'espace de stockage est infini, il n'y a pas de pile complète.
int push(SqStack &st,int x){ if(st.top == -1) //判断栈是否为空,如果空,则不能进行出栈 return 0; x = st.data[st.top] //先把栈顶元素取出来 --(st.top); //栈顶指针位置减1 return 1;}
Activités: La pile de chaîne de chaîne est l'activité d'insertion de l'extrémité interne pour établir une liste liée; L'intérieur est de supprimer la liste des fils.
/*初始化栈*/int stack[maxsize];int top = -1;/*元素x进栈*/stack[++top] = x/*元素x出栈*/x = stack[top--]/*注意++top和top++的区别*/top = 1a = ++topb = top++a = 2b = 1
1) Initialisez la pile de cordes: 2) Dans la pile:
3) Stack:
4) Version simplifiée:
File d'attente:
La file d'attente est seulement autorisé à insérer en une extrémité, à l'autre extrémité, la carte linéaire sera supprimée, la file d'attente est une forme linéaire de la première avancée, appelée FIFO, une extrémité de l'insertion est appelée Irland (derrière), une extrémité de la fin de la suppression. La finition s'appelle la tête de l'équipe (avant). L'insertion d'éléments dans le groupe appelé groupes et nouveaux éléments sont devenus un nouvel élément de queue après avoir entré dans le groupe; Supprimer des éléments du groupe appelé dans le groupe, une fois que l'élément est en dehors du groupe, les facteurs deviennent les nouveaux éléments de l'équipe.
1. La structure de mémoire de la file d'attente
est utilisée pour stocker la structure de données de l'élément de données de file d'attente.
Structure de stockage séquentielle de la file d'attente:
void initStack(LNode *&lst){ lst = (LNode*)malloc(sizeof(LNode)); //制造一个头结点 lst -> next = NULL; //初始头结点指向为NULL}
Lorsque vous utilisez des files d'attente de magasin de stockage, les files d'attente de la file d'attente menent la tête, c'est-à-dire l'indice de 0. Emplacement, Quand il y a un facteur, tous les facteursUne fois que les éléments du groupe doivent avancer et s'assurer que la file d'attente est toujours en 0 et elle augmentera considérablement la complexité du temps.
void push(LNode *lst,int x){ LNode *p; p = (LNode*)malloc(sizeof(LNode)); //为进栈元素申请结点空间 p -> next =NULL; //初始化结点不指向任何元素 /*进栈,相当于链表的头插法*/ p -> data = x; //将x赋值给p结点的值域 p -> next = lst -> next; //p指针指向原lst指向的结点 lst -> next = p; //lst指向结点p}
Utilisation de la feuille de séquence pour stocker la structure de données de l'élément de file d'attente appelée Structure de stockage des ordres de la file d'attente, définie comme suit: int pop(LNode *lst,int &x){ LNode *p; if(lst -> next == NULL) //栈空则不能出栈,返回0;而栈不会满,所以在进栈的时候未作判断 return 0; /*出栈,相当于链表的删除结点*/ p = lst -> next; x = p -> data; lst -> next = p -> next; free(p); return 1;}
/*元素(指针p所指)进栈操作*//*类似于头插法建立链表*/p -> next = lst -> next; //将空栈的头结点指向plst -> next = p; //将指针p指向空栈头结点/*出栈操作(出栈元素保存在x中)*//*类似于单链表的删除操作*/p = lst -> next;x = p -> data;lst -> next = p -> next;free(p);
]
1.2 Structure de stockage File d'attente:
La structure de données de la file d'attente L'élément s'appelle la structure de stockage de chaîne de l'élément de file d'attente avec la liste liée, déterminée comme suit:
Définissez le bouton de la file d'attente:
2. Ligne up
2.1 Cycle de la file d'attente
typedef struct{ int data[maxsize]; //定义数组 int front; //队首指针 int rear; //队尾指针}SqQuene; //顺序队列定义
Lorsque la commande est répertorie un temps élevé compliqué, il y a un problème à résoudre, pourquoi devez-vous laisser le titre apparaître en position 0? Par conséquent, certaines personnes avancent à la condition que l'élément de file d'attente soit enregistré dans le tableau doit être enregistré dans la matrice, de sorte que l'élément de titre n'a pas besoin d'être 0. Cependant, avec la file d'attenteDe l'élément de file d'attente, le pointeur d'en-tête se déplace en arrière, en supposant que le pointeur de la queue est à maxsize-1, à ce moment-là, bien que la file d'attente ait une capacité de stockage, le groupe n'a pas pu entrer dans le groupe, tel que l'image ci-dessous: Bien qu'il y ait de l'espace en position 0 et 1, l'équipe n'a plus un nouvel élément pour entrer dans le groupe, nous appelons cette situation comme "faux débordement", pour résoudre ce faux débordement, la file d'attente circulatoire proposée Concept, à la queue de la file d'attente connectée et la structure de stockage séquentielle connectée à cette tête est appelée file d'attente circulatoire.
La file d'attente de circulation nécessite un certain espace, alors qu'avant = le dos apparaîtra lorsque l'équipe est vide.
Éléments de circulation de la file d'attente:
typedef struct QNode{ int data; //数据域 struct QNode *next; //指针域}QNode; //队结点类型定义
typedef struct{ QNode *front; //队头指针 QNode *rear; //队尾指针}LiQuene; //链队类型定义
Deux états: Statut de l'équipe:
] :Deux opérations:
Elément X dans l'activité du groupe (pointeur de la queue mobile)
Elément x hors de l'activité DynamiqueGroupe (pointeur d'équipe portable)
Algorithme de file d'attente initiale:
qu.rear = qu.front
(qu.rear+1)%maxsize == qu.front
qu.rear = (qu.rear+1)%maxSize;qu.data[qu.rear] = x;
. Algorithme d'exportation: 2.2 String: Chaîne d'équipe Il s'agit d'une file d'attente de stocker des structures de stockage de chaînes. Facteur de la chaîne: Équipe groupe complet, éléments de groupe et par équipes. Équipes: En général, aucune équipe n'est pleine, tant que la mémoire est suffisamment grande. L'élément dans le fonctionnement du groupe (Pointeur P pointé vers l'élément de groupe) L'élément hors de l'opération du groupe (élément de stockage X) Algorithmes de groupe d'affiliés Isolement de jugement de l'isolement L'algorithme de violation ALGORITHM d'exportation