I think I might have done something right, headByRating and headByName both refer to the same address.
I have been drawing diagras working all day trying new things etc, and i havent really made any progress.
I have two list pointers, headByRating and headByName.
and two node pointers nextByName and nextByRating.
Somehow I need to be able to sort this stuff by its name and rating.
I've been thinking that I do that by each of the ptrs' address'.
2 statements as an example that I have been trying to sort:
//main.cpp
list *wineries = new list();
wineries->insert(winery("Lopez Island Vinyard", "San Juan Islands", 7, 95));
wineries->insert(winery("Gallo", "Napa Valley", 200, 25));
the winery ctor is fine everything is allocated and into the object at this point:
//list.cpp
void list::insert( const winery& winery )
{
list *listPtr = new list(); // havent really used the list obj. yet.
node *current = new node( winery ); // winery is now a node.
node *temp = current; // temp knows about the nodes address.
while ( temp->nextByName != NULL )
{
// check for null and reassign
temp = temp->nextByName;
}
node *new_node = new node( winery ); // creating a new node.
new_node->item = winery;
new_node->nextByName = new_node;
new_node->nextByRating = new_node;
}
// list.h
struct node
{
winery item;
node * nextByName;
node * nextByRating;
};
class list
{
...
private:
node * headByName;
node * headByRating;
};
What is a good approach to this? I dont think im doing this right.
Answer
Why are you rolling your own linked list? Why not use std::list
?
If it's for the double-sorting thing, two separate lists of pointers would work, and be a hell of a lot easier if you can then use the provided container classes.
Or alternatively, if you need to sort it, is a linked list the best option? std::vector
is often easier for sorting, or std::set
maintains the order itself.
No comments:
Post a Comment