Bonjour,

j'ai un petit soucis dans un programme, j'ai une liste chainée et je dois la parcourir a un moment pour supprimé des maillions.

voila ma structure et ma liste chainnée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
typedef struct          s_block
{
  wchar_t               **line;
  struct s_block        *nxt;
}                       t_block;
 
typedef struct          s_data
{
  char                  *path;
  char                  **flag;
  t_block               *block;
}                       t_data;


Voila ma fonction de parcours.

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
int     save(t_data *data)
{
  t_block     *tmp;
  int           flag;
  int           indice = 0;
 
  tmp = data->block;
  while (tmp != NULL)
    {
      if (delete_this(tmp->line) == 1)
        {
          delete_block(data, indice);
        }
      tmp = tmp->nxt;
      indice++;
    }
  return 1;
}
voila la fonction qui supprime

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
35
36
 int     delete_block(t_data *data, int indice)
{
  t_block       *tmp;
  t_block       *tmp_old = NULL;
  int           i = 0;
 
  tmp = data->block;
  while (tmp != NULL)
    {
      if (i == indice)
        {
          if (tmp == data->block)
            {
              //on free                                         
              data->block = tmp->nxt;
            }
          else if (tmp->nxt == NULL)
            {
              //on free                                         
              tmp_old->nxt = NULL;
              /* tmp = tmp_old; */
              /* tmp->nxt = NULL; */
            }
          else
            {
              tmp_old->nxt = tmp->nxt;
              //on free                                         
            }
          return 1;
        }
      tmp_old = tmp;
      tmp = tmp->nxt;
      indice++;
    }
  return 1;
}
je ne comprend d'ou vien le probleme, pouvez vous m'aider ?

ma fonction supprime mal.