Déplacement dans une liste doublement chaînée
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:
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. ;)