10-19-2011, 04:11 AM
Hey everyone, this is my first time posting, so hopefully i won't commit some kind of egregious faux pas.
Anyways, I'm trying to create and read back a simple linked list in C++. So far, I think I've built it and filled it with 10 different arrays of characters of about 22 characters each. (They are simple questions written in english.) My program compiles fine, and it runs, but only to a certain point. When it gets to the following line:
cout << current->info << " "<<endl; //outputs the 'info' component of the
...it stops and says "Segmentation fault". I'm not sure what it could be, though I'm new at this so it may be obvious. Previous to this line, I have the following lines:
head = buildlist(); //calls a function to build the list, and sets head
//equal to the first node. (i think)
current = head; //sets current equal to head.
The other, lesser problem that is probably the cause of this is that when I print out the various 'link' values as they're built, they have the following values:
first = 0x100100080
first->link = 0x10010090
first->info = This is statement 1.
second = 0x10010090
second->link = 0x1001000a0
second->info = This is statement 2.
third = 0x1001000a0
third->link = 0x1001000b0
third->info = This is statement 3.
last = 0x100100110
last->link = 0
last->info = This is statement 10.
...Now all this seems fine and good, but after this is done and I set 'head' equal to the function, and then ask it to print out 'head', it gives me this:
head->info = ?핂?
...The info here is really very weird, and it's obviously not equivalent to the array of characters "This is statement 1." I feel that this might be because I'm setting the 'head' wrong. I want it to be equal to the first node of the list, but I'm not sure if setting it equal to the function call that builds the entire list is the way to do that.
The way I have the program written, it's supposed to iterate over each item in the list and print out the info in each. (10 items in all). It [should] do this by first setting 'current = head', and then after each iteration setting 'current = current->link'.
For some reason, though, it only iterates two complete times, giving me garbled output each time, and then on the third time, it gives me a Segmentation fault instead of printing the info. It looks something like this:
now, we're inside the final while loop
... So anyone have any ideas? I apologize if this is too much information, but I wanted to be as thorough as possible without simply posting my code, (it's for a school assignment, and I wanted to keep everything on the "up and up"). That being said, if there's other information anyone needs to make a guess at what's going on, please just let me know.
Also, I'm running this on a 2008 intel-based Macbook, OS X Snow Leopard (Ver. 10.6.8)