I am trying to make a simple array of linked lists,every case in this array containing the head of a linked list,the code contains lot of functions,creating the lists,reading data in the lists,printing each node,and deleting the node.
#include <iostream>
using namespace std;
struct processus {
    int id;
    int prio;
    int etat;
    processus* suiv;
};
void inserD(processus*& D, int x, int y, int z)
{
    processus* nouv = new processus;
    nouv->id = x;
    nouv->prio = y;
    nouv->etat = z;
    nouv->suiv = D;
    D = nouv;
}
void afficher(processus** tab, int M)
{
    int i, j = 1;
    for (i = 0; i < M; i++) {
        processus* c = tab[i];
        while (c != NULL) {
            cout << j << "-->\t";
            cout << c->id << " ";
            cout << c->prio << " ";
            cout << c->etat << endl;
            c = c->suiv;
            j++;
        }
        cout << "\n";
    }
}
void supprimer(processus*& D)
{
    processus* supp;
    while (D != 0) {
        supp = D;
        D = D->suiv;
        delete supp;
    }
}
void insertF(processus* tab, int x, int y, int z)
{
    processus* last = new processus;
    last->id = x;
    last->prio = y;
    last->etat = z;
    if (tab == 0) {
        tab = last;
        last->suiv = 0;
    }
    else {
        processus* c = tab;
        while (c->suiv != 0) {
            c = c->suiv;
        }
        c->suiv = last;
        last->suiv = 0;
    }
}
void Creation(processus** tab, int l, int m)
{
    int x, y, z, i, j;
    for (i = 0; i < l; i++) {
        tab[i] = new processus[m];
        for (j = 0; j < m; j++) {
            cout << "donner id:";
            cin >> x;
            cout << "donner prio:";
            cin >> y;
            cout << "donner etat:";
            cin >> z;
            insertF(tab[i], x, y, z);
        }
    }
}
int main()
{
    int l, m;
    cout << "entrer le nombre des listes:";
    cin >> l;
    cout << "entrer le nombre de procesuss dans chaque liste";
    cin >> m;
    processus** tab = new processus*[l];
    for (int i = 0; i < l; i++) {
        *(tab + i) = NULL;
    }
    Creation(tab, l, m);
    afficher(tab, l);
    for (int i = 0; i < l; i++) {
        delete[] tab[i];
    }
    delete[] tab;
}
the problem is that when i run the code it always add a node at the first of each case in this array and output a random data in it,and i cant find the problem in the code.
 
     
     
    