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.