将节点添加到单链表的末尾
Adding nodes to the end of a singly linked list
我在向单链表添加节点时遇到问题,由于某些原因
if(current->next == NULL)
当列表为空时会被跳过,这会在我显示列表时导致段错误...我真的很困惑为什么它会被跳过任何想法?
void addToList(node** head, char name[30], int groupSize, boolean inRest){
//create new node
node *newNode = (node*)malloc(sizeof(node));
if (newNode == NULL) {
fprintf(stderr, "Unable to allocate memory for new node\n");
exit(-1);
}
InitNodeInfo(newNode, name, groupSize, inRest);
node *current = head;
//check for first insertion
if (current->next == NULL) {
current->next = newNode;
printf("added at beginning\n");
} else {
//else loop through the list and find the last
//node, insert next to it
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
printf("added later\n");
*head = current;
}
if (debug == FALSE) { //debug mode...
printf("Pushed the value %d on to the stack\n", groupSize);
} else {
printf("\n\nATTENTION : Group cannot be added, the name entered already exists!\n\n");
}
}
假设一个空列表有 head == NULL
这应该可以(我现在没有办法尝试)
void addToList(node** head, char name[30], int groupSize, boolean inRest){
//create new node
node *newNode = (node*)malloc(sizeof(node));
if(newNode == NULL){
fprintf(stderr, "Unable to allocate memory for new node\n");
exit(-1);
}
InitNodeInfo(newNode, name, groupSize, inRest);
node *current = *head;
//check for first insertion
if(current == NULL){
// make head point to the new node
*head = newNode;
printf("added at beginning\n");
}
else
{
//else loop through the list and find the last
//node, insert next to it
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
printf("appended\n");
}
// mark the element as the last one
newNode->next = NULL;
if (debug == FALSE) {//debug mode...
printf("Pushed the value %d on to the stack\n", groupSize);
}
else{
printf("\n\nATTENTION : Group cannot be added, the name entered already exists!\n\n");
}
}
我在向单链表添加节点时遇到问题,由于某些原因
if(current->next == NULL)
当列表为空时会被跳过,这会在我显示列表时导致段错误...我真的很困惑为什么它会被跳过任何想法?
void addToList(node** head, char name[30], int groupSize, boolean inRest){
//create new node
node *newNode = (node*)malloc(sizeof(node));
if (newNode == NULL) {
fprintf(stderr, "Unable to allocate memory for new node\n");
exit(-1);
}
InitNodeInfo(newNode, name, groupSize, inRest);
node *current = head;
//check for first insertion
if (current->next == NULL) {
current->next = newNode;
printf("added at beginning\n");
} else {
//else loop through the list and find the last
//node, insert next to it
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
printf("added later\n");
*head = current;
}
if (debug == FALSE) { //debug mode...
printf("Pushed the value %d on to the stack\n", groupSize);
} else {
printf("\n\nATTENTION : Group cannot be added, the name entered already exists!\n\n");
}
}
假设一个空列表有 head == NULL
这应该可以(我现在没有办法尝试)
void addToList(node** head, char name[30], int groupSize, boolean inRest){
//create new node
node *newNode = (node*)malloc(sizeof(node));
if(newNode == NULL){
fprintf(stderr, "Unable to allocate memory for new node\n");
exit(-1);
}
InitNodeInfo(newNode, name, groupSize, inRest);
node *current = *head;
//check for first insertion
if(current == NULL){
// make head point to the new node
*head = newNode;
printf("added at beginning\n");
}
else
{
//else loop through the list and find the last
//node, insert next to it
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
printf("appended\n");
}
// mark the element as the last one
newNode->next = NULL;
if (debug == FALSE) {//debug mode...
printf("Pushed the value %d on to the stack\n", groupSize);
}
else{
printf("\n\nATTENTION : Group cannot be added, the name entered already exists!\n\n");
}
}