当尝试将学生添加到列表的末尾时,出现的字母顺序错误。我已经尝试过将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;
答案 0 :(得分:0)
我看到的一件事是,在for()循环中初始化指针时,您正在跳过链表的第一个成员。如果您的清单为空怎么办?这不会在末尾添加节点。