Maison  >  Article  >  développement back-end  >  Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

王林
王林avant
2023-09-15 16:01:01695parcourir

Une structure de données est un ensemble de données organisées de manière structurée. Il est divisé en deux types, à savoir la structure de données linéaire et la structure de données non linéaire.

Expliquer le concept de pile en langage C

Structure des données linéaires - Ici, les données sont organisées de manière linéaire.

Par exemple : tableau, structure, pile, file d'attente, liste chaînée.

Structure de données non linéaire - Ici, les données sont organisées de manière hiérarchique.

Par exemple - arbres, graphiques, ensembles, tableaux.

Pile en langage C

Il s'agit d'une structure de données linéaire, les données ne peuvent être insérées et supprimées qu'à une extrémité.

Opération

  • Push - Insérez un élément dans la pile.
  • Pop - Supprime un élément de la pile.

Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

Expliquer le concept de pile en langage C

Deleted element = 50
Item = a [top]
top --
  • pop(),pop(),pop(), pop()
Deleted element = 40
Deleted element=30
Deleted element=20
Deleted element =10
  • Pop ( )

Stack Overflow

Conditions

  • Stack Overflow - Essayez d'insérer un élément dans la pile complète.

  • Stack Underflow - Tentative de suppression d'un élément d'une pile vide.

Algorithme Push ( ), Pop ( ), Display ( )

L'algorithme correspondant est le suivant :

Push ( )

  • Vérifiez si la pile déborde.
if (top = = n-1)
printf("stack over flow”);
  • Sinon, insérez un élément dans la pile.
top ++
a[top] = item

Pop ( )

  • Vérifiez le sous-dépassement de la pile.
if ( top = = -1)
printf( "stack under flow”);
  • Sinon, supprimez l'élément de la pile.
item = a[top]
top --

Affichage ( )

  • Vérifiez le flux de la pile.
if (top == -1)
printf ("stack is empty”);
  • Sinon, suivez l'algorithme mentionné ci-dessous −
for (i=0; i<top; i++)
printf ("%d&rdquo;, a[i]);

Exemple

Voici le programme C pour implémenter la pile à l'aide de tableaux :

#include<stdio.h>
#include <conio.h>
int top = -1, n,a[100];
main ( ){
   int ch;
   void pop ( );
   void display ( );
   clrscr ( );
   printf ("enter the size of the stack&rdquo;);
   scanf ("%d&rdquo;, &n);
   printf("stack implementation</p><p>&rdquo;);
   printf ("1. push </p><p>&rdquo;);
   printf ("2. Pop </p><p>&rdquo;);
   printf ("3. exit </p><p>&rdquo;);
   do{
      printf ( "enter ur choice&rdquo;);
      scanf ("%d&rdquo;, &ch);
      switch (ch){
         case 1 : push ( );
         display ( );
         break;
      case 2 : push ( );
         display ( );
         break;
      case 3 : exit
   }
   }while (ch>=1 | | ch<= 3);
   getch ( );
}
void push ( ){
   int item;
   if (top = = n-1)
      printf ( "stack over flow&rdquo;)
   else{
      printf("enter an element for insertion&rdquo;)
      scanf ("%d&rdquo;, &item);
      top ++;
      a[top] = item;
   }
}
void pop ( ){
   int item;
   if (top = = -1);
      printf ( "stack under flow&rdquo;);
   else{
      item = a[top];
      top --;
      printf("deleted element = %d&rdquo;, item);
   }
}
void display ( ){
   int i;
   if (top = = -1)
      printf ( "stack is empty&rdquo;);
   else{
      printf("contents of the stack are&rdquo;);
      for (i=0; i<top; i++)
         printf ("%d \t&rdquo;, a[i]);
   }
}

Output

Lorsque le programme ci-dessus est exécuté, il produit ce qui suit Résultat −

enter the size of the stack = 5 [given by user]
Stack implementation
1. Push 2. Pop 3. exit
Enter ur choice : 1 [given by user]
Enter an element for insertion : 10
Contents of the stack : 10
Enter ur choice : 1
Enter an element for insertion : 2
Contents of the stack : 10 20
Enter ur choice : 2
Deleted element = 20
Contents of the stack are : 10
Enter ur choice : 2
Deleted element : 10
Contents of the stack are : stack is empty
Enter ur choice : 2
Stack underflow.
Enter ur choice : 1
Enter an element for insertion : 30
Contents of the stack are : 30

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer