Reputation: 1208
void List_sort (struct nodeStruct **headRef){
struct nodeStruct *tempNode = *headRef;
struct nodeStruct *nextNode, *smallestNode;
while (tempNode != NULL){
nextNode = tempNode->next;
smallestNode = tempNode;
while (nextNode != NULL){
if (nextNode->item < smallestNode->item) {
smallestNode = nextNode->next;
}
nextNode = nextNode->next;
}
int tempInt = tempNode->item;
tempNode->item = smallestNode->item;
smallestNode->item = tempInt;
tempNode = tempNode->next;
}
}
Don't know why it's generating a seg fault, there should be no edits to NULL.
Segmentation fault. 0x00000000004008d4 in List_sort (headRef=0x7fffffffe458) at list.c:130 130 tempNode->item = smallestNode->item;
Anyone know why it's doing this?
Update: Performed the suggestions and no more seg fault, however does not sort correctly.
Value: 1
Value: 2
Value: 7
Value: 3
Value: 4
Value: 6
Value: 5
Value After Sort: 1
Value After Sort: 2
Value After Sort: 4
Value After Sort: 3
Value After Sort: 5
Value After Sort: 6
Value After Sort: 7
Upvotes: 2
Views: 176
Reputation: 33273
This isn't right:
if (nextNode->item < smallestNode->item) {
smallestNode = nextNode->next;
}
it should be:
if (nextNode->item < smallestNode->item) {
smallestNode = nextNode;
}
Upvotes: 1