添加到链表的末尾不起作用

时间:2018-11-30 03:45:25

标签: c linked-list

当尝试将学生添加到列表的末尾时,出现的字母顺序错误。我已经尝试过将add更改为函数的结尾部分,但似乎看不出有什么问题。

这是我添加结尾的方式

  Student *prvPtr= headStudentList;
    for(Student *curPtr = headStudentList->next; curPtr != NULL; curPtr = curPtr->next)
    {
            if (curPtr->next==NULL){
                    curPtr->next= newPtr; //newPtr
                    return headStudentList;
            }
             if(strcmp(curPtr->lastName,last)<0 ){ //change from first

                    if(strcmp(curPtr->firstName,first)<0 )
                    {
                    newPtr->next=curPtr->next;
                    curPtr->next =newPtr; //curPtr->next =newPtr
                    return headStudentList; //headStudentList
                    }
             }
    }

这就是结构内部

typedef struct _grade {
char name[4];
double value;
struct _grade *next;} Grade;

///////////////////////////////////////////////// //////////////////////////

typedef struct _student {
char *lastName;
char *firstName;
Grade *headGradeList;
struct _student *next;} Student;

1 个答案:

答案 0 :(得分:0)

我看到的一件事是,在for()循环中初始化指针时,您正在跳过链表的第一个成员。如果您的清单为空怎么办?这不会在末尾添加节点。