Je suis en train de faire liste chaînée similaire aussi celui ici:C++ liste liée
est d'avoir la « tête », je l'ai appelé d'abord, dans un autre struct. Cependant j'ai trouvé faire ce changement. Il est difficile d'ajouter des valeurs à la structure list_item. J'ai essayé quelques trucs pour voir si ça marche. Il compile, mais quand je cours le code, il va planter. Toute aide serait utile ici. Je sais que la cause du crash est quand je veux pointer le new_node vers la liste liée.
#include <iostream>
using namespace std;
struct list_item
{
int key;
int value;
list_item *next;
};
struct list
{
struct list_item *first;
};
int main()
{
list *head;
list *new_node;
head = NULL;
head->first = NULL;
for(int i = 0; i < 10; i++)
{
//allocate memory for new_node
new_node = (list*)malloc(sizeof(list));
new_node->first = (list_item*)malloc(sizeof(list_item));
//adding the values
new_node->first->key = i;
new_node->first->value = 10 + i;
//point new_node to first;
new_node->first->next = head->first;
//point first to new_node;
head->first = new_node->first;
}
//print
list *travel;
travel->first = head->first;
int i = 0;
while(travel != NULL)
{
cout << travel->first->value << endl;
travel->first = travel->first->next;
}
return 0;
}
Notez que C++ a std :: list <> en tant que conteneur standard disponible pour vous. Pour cette raison, je supprime votre balise C++. – ChrisInEdmonton
Si ça va être étiqueté C et non C++, utilisez structs au lieu de classes, et malloc au lieu de operator new, je suis tenté de modifier ceci pour commencer à utiliser printf, arrêter de retourner la valeur de retour de malloc, et ne pas compter sur un impliquer typedef d'une définition de structure: P – asveikau