Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Connecting link lists (http://www.go4expert.com/forums/connecting-link-lists-t21430/)

PcCopat 20Mar2010 23:49

Connecting link lists
 
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.

shabbir 21Mar2010 09:52

Re: Connecting link lists
 
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.

PcCopat 21Mar2010 17:45

Re: Connecting link lists
 
I've found the error.

I should have used
Code:

head->docNum = new NodeSmall;
instead of
Code:

NodeSmall *docNum = new NodeSmall;


All times are GMT +5.5. The time now is 17:10.