Monday, August 5, 2019

c++ - LinkedList Part



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

hard drive - Leaving bad sectors in unformatted partition?

Laptop was acting really weird, and copy and seek times were really slow, so I decided to scan the hard drive surface. I have a couple hundr...