Swift: File séquentielle -8-

Suppression d’un élément
Suppression d’un élément dans une file à une position donnée

Le problème revient à supprimer une place p après avoir parcouru p-1 position d’une file de n éléments. Le schéma de programme correspondant supprimerPosition est formé par la séquence de trois actions:

  • Copie des p-1 premiers éléments de la file
  • Lecture sans copie du p ième élément
  • Copie des n-p derniers élémements
func SupprimerParPosition(file1: File_Entier
                         ,inout file2: File_Entier
                         ,position: Entier) -> Bool {
   var nouvelleCollection: File_Entier = InitialiserCollection()
   var index = 1
 
   Premier(file1)
   while (Infer(index, element: position)) && (!Dernier(file1)) {
      index = PlusUn(index)
      nouvelleCollection = Ranger(nouvelleCollection, element: Prendre(file1))
      Avancer(file1)
   }
   if (Egal(index, element: position)) && (!Dernier(file1)) {
      Avancer(file1) // pour supprimer par increment du curseur
      while !Dernier(file1) {
         nouvelleCollection = Ranger(nouvelleCollection, element: Prendre(file1))
         Avancer(file1)
      }
      file2 = nouvelleCollection
      return true
   }
   file2 = file1
   return false
}
Supprimer un élément par valeur
func SupprimerParValeur(file1: File_Entier
                       ,inout collection2: File_Entier
                       ,valeur: Entier) -> Bool {
    var nouvelleFile: File_Entier = InitialiserCollection()
    var trouve = false
    
    Premier(file1)
    while (!trouve) && (!Dernier(file1)) {
        if Egal(valeur,element: Prendre(file1)) {
            trouve = true
        } else {
            nouvelleFile = Ranger(nouvelleFile, element: Prendre(file1))
        }
        Avancer(file1)
    }
    if trouve {
        while !Dernier(file1) {
            nouvelleFile = Ranger(nouvelleFile, element: Prendre(file1))
            Avancer(file1)
        }
        collection2 = nouvelleFile
        return trouve
    }
    collection2 = file1
    return trouve
}