Connecting link lists

PcCopat's Avatar, Join Date: Mar 2010
Newbie Member
Hello, I want to make a linked list program consisting of one main link, and each main links have sub link like

Code:
Main 1 -> Main 2 -> Main 3 -> ... -> Main N -> NULL
   |        |          |                        
Sub 1-1    ...       ...
   |                
Sub 1-2    
   |              
  ...
I have two structs for these:

Code:
struct NodeSmall
{
    int documentNum;
    NodeSmall *nextNum;
    NodeSmall()
    {
        documentNum = 0;
        nextNum = NULL;
    }
};

struct NodeBig
{
    string keyword;
    NodeBig *nxtkyw; //Link to next keyword
    NodeSmall *docNum; //Link to document number

    NodeBig()
    {
        keyword = "";
        nxtkyw = NULL;
    }
    
};
And I have a test main which reads first line from text file:

Code:
int main()
{

    string line, key;
    int number;
    ifstream dbfile;
    dbfile.open("docdb.txt");

    dbfile >> key >> number;

    NodeBig *head = new NodeBig;
    NodeSmall *docNum = new NodeSmall;
    
    head->keyword = key;
    head->nxtkyw = NULL;
    head->docNum->documentNum = number;

    cout << "keyword is " << head->keyword << " and it is on " << head->docNum->documentNum;

It does not give compiler error (vs2008) but it gives stopped working error after running the program. I think I've made a mistake while connecting link lists together. But I cannot find similar probles on internet. What should I do for fixing this error? Thank you.
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
head->docNum->documentNum = number;

is not valid because docNum is not assigned anything.

Have you checked if your file exists and it reads the number into the variables fine.
0
PcCopat's Avatar, Join Date: Mar 2010
Newbie Member
I've found the error.

I should have used
Code:
head->docNum = new NodeSmall;
instead of
Code:
NodeSmall *docNum = new NodeSmall;