Bonjour,
Depuis plusieurs jours, je tente de trouver la solution à mon problème que voici :

J'ai un ruban de données comme ceci : 0 1 0 0 1 0 1 1
Et je voudrais pouvoir me déplacer en avant de deux cases par exemple et ensuite revenir en arrière d'une case (comme avec une machine de Turing).

Voilà ce que j'ai fait (j'ai simplifié le code) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct elem_ruban {
  char c; // Elément actuel
  struct elem_ruban* prec; // Précédent
  struct elem_ruban* suiv; // Suivant
};
 
typedef struct info_ruban {
    int taille; // Taille du ruban
    struct elem_ruban *debut; // Début du ruban
    struct elem_ruban *fin; // Fin du ruban
} ruban;
 
int main(int argc, char *argv[]) {
    ruban *r = NULL; // Le ruban
    // Ajout des éléments dans le ruban
    ...
    // Déplacement dans le ruban
    struct elem_ruban *r_temp = malloc(sizeof *r_temp);
    r_temp=r->debut;
 
    while (pas_fini) {
          ...
          if (deplacement_droite==0) {
                r_temp=r_temp->suiv;
          }
          else if (deplacement_gauche==0) {
                r_temp=r_temp->prec;
          }
          ...
    }
Donc on voit bien que dans le premier déplacement à droite, r_temp->prec ne contient rien.
Ce qui a pour conséquence que je ne peux pas me déplacer à gauche.

En espérant que vous pourrez m'aider, merci.