title: date structure and linked list printing problem
body: <p>I am trying to creat a linked list in c language,
  the code compiles with no error but when I run it , it won't run.</p>
  <p>the data structure is a task which contains the label it's number, duration , number of linked tasks which will be put in an array and a pointer to the next task.</p>
  <p>here's my code and the test code</p>
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  typedef struct tache { //linked listes structure
      char label;
      int num; //task number
      int dure;
      int *inter;
      int n; //nombre d'antécedents
      struct tache * suivant;
  }strTache,*pTask;
  
  
  pTask creerVide(){ //créer une tache vide
      return NULL;
  }
  
  pTask firstTask(int d){
      //créer la première tache qui prend la durée en argument
      pTask first = (strTache*)(malloc(sizeof(strTache)));
      first-&gt;num = 1;
      first-&gt;suivant = NULL;
      first-&gt;label = 'A';
      first-&gt;dure = d;
      first-&gt;n = 0;
      return first;
  }
  
  Bool vide(pTask t){return t==NULL;} //check if a liste of tasks is empty this is predefined in a header included in the program
  
  pTask ajouteTask(pTask t, int d){
      pTask new = (strTache*)(malloc(sizeof(strTache)));
      
      if(vide(t)){
          new = firstTask(d);
          t-&gt;suivant = new;
          
      }else
      {
          pTask parc = t;
          while(parc-&gt;suivant != NULL){parc=parc-&gt;suivant;}
              new-&gt;num = parc-&gt;num+1;
              new-&gt;label = parc-&gt;label+1;
              new-&gt;suivant = parc-&gt;suivant;
              parc-&gt;suivant = new;
              new-&gt;dure=d;
             
      }
      return new;
  
  }
  
  void ajouteInter(pTask p,int numero, int taille, int tab[]){
      int i,j;
      pTask move = p;
  
      while(move-&gt;suivant!=NULL){
          if(move-&gt;num != numero){
              move=move-&gt;suivant;
          }//fin if
          else 
          {
              move-&gt;inter = (int*) malloc(taille*sizeof(int));
              move-&gt;n = taille;
          }//fin else
      }//fin while
      for(i=0;i&lt;taille;i++){
          move-&gt;inter[i] = tab[i];
      }//fin for
  }//fin function
  
  
      void affichmat2(pTask p){
      int i = 0;
      pTask parc = p;
      while(parc!= NULL){
          
          printf(&quot;la tache %c a %d antécédents : &quot;,parc-&gt;label,parc-&gt;n);
          for(int j=0;j&lt;parc-&gt;n;j++){
              printf(&quot;%d &quot;,parc-&gt;inter[j]);
              }
          printf(&quot;\n&quot;);
          parc=parc-&gt;suivant;
          i++;
      }
      free(parc);
  }
  
  int main()
  {
      int b[1] = {1};
      int c[2] = {1,2};
  
      //pTask t1 = creerVide();
  
      pTask t1 = firstTask(2);
      pTask t2,t3;
      t2 = ajouteTask(t1,3);
      t3 = ajouteTask(t2,4);
      ajouteInter(t2,2,1,b);
      ajouteInter(t3,3,2,c);
      affichmat2(t1);
  
  
  
      return 0;
  }
  </code></pre>
  <p>I have made some changes thanks to your advice:</p>
  <p>the function ajoutetask which called now addtask:
  ,,,</p>
  <pre><code>pTask addTask(pTask t, int d){
      pTask new;
      if(vide(t)){
          new = firstTask(d);
          new-&gt;suivant = t;
          
      }else
      {
          new = (strTache*)(malloc(sizeof(strTache)));
          pTask parc = t;
          while(parc-&gt;suivant != NULL){parc=parc-&gt;suivant;}
              new-&gt;num = parc-&gt;num+1;
              new-&gt;label = parc-&gt;label+1;
              new-&gt;suivant = parc-&gt;suivant;
              parc-&gt;suivant = new;
              new-&gt;dure=d;
             
      }
      return new;
  
  }
  </code></pre>
  <p>,,,</p>
  <p>the function ajouteinter which called now add antecedent:</p>
  <pre><code>void addAntecedent(pTask p,int num, int size, int b[]){
  
          pTask search = p;
          while(search-&gt;num !=num){
              search = search-&gt;suivant;
          }
          search-&gt;inter = (int*)malloc(sizeof(int)*size);
          search-&gt;n = size;
          for(int i = 0;i&lt;size;i++){
              search-&gt;inter[i] = b[i];
          }
      }
  </code></pre>
  <p>the changes to the test file :</p>
  <pre><code>int main (){
        int b[1] = {1};
      int c[2] = {1,2};
  
      pTask t1 = firstTask(2);
      pTask t2,t3;
      t2 = addTask(t1,3);
      t3 = addTask(t1,4);
      addAntecedent(t1,2,1,b);
      addAntecedent(t1,3,2,c);
      affichmat2(t1);
      return 0;
  }
  </code></pre>
  <p>the code works properly now</p>
  <p>the result :</p>
  <p>la tache A a 0 antécédents :
  la tache B a 1 antécédents : 1
  la tache C a 2 antécédents : 1 2</p>