Ce programme est censé faire une liste aléatoire de n
numéros que l'utilisateur entre, mais quand il essaie d'imprimer la liste liée, il obtient un défaut de segmentation.Je continue d'obtenir la faute de segmentation sur la liste de liens
Le programme fonctionne jusqu'à ce qu'il affiche la liste chaînée.
#include <iostream>
class node
{
public:
// TYPEDEF
typedef double value_type;
// CONSTRUCTOR
node(
const value_type& init_data = value_type(),
node* init_link = NULL
)
{ data_field = init_data; link_field = init_link; }
// Member functions to set the data and link fields:
void set_data(const value_type& new_data) { data_field = new_data; }
void set_link(node* new_link) { link_field = new_link; }
// Constant member function to retrieve the data:
value_type data() const { return data_field; }
// Constant member functions to retreive the link:
node* linker() const { return link_field; }
private:
value_type data_field;
node* link_field;
};
int myrand(int)
{
return(1 + rand() %(1000 - 1 +1));
}
void print_linked_list(node*& head_ptr, node*& print_ptr, size_t n)
{
for (size_t i =1 ; i <= n ; i++) {
head_ptr = new node(myrand(n), head_ptr);
}
std::cout << "Unsorted List: " << std::endl;
for (print_ptr = head_ptr; print_ptr !=NULL; print_ptr = print_ptr->linker()) {
std::cout << print_ptr->data() << " ";
}
}
int main()
{
size_t n;
srand(time(NULL));
node* head_ptr;
node* print_ptr;
std::cout << "Please input a number" << std::endl;
std::cin >> n;
print_linked_list(head_ptr, print_ptr, n);
return 0;
}
En remarque, vous avez également une fuite de mémoire, car vous ne supprimez jamais les nœuds créés avec 'new'. –