c - 添加到链表的末尾不起作用
问题描述
当尝试将学生添加到我的列表末尾时,它的字母顺序错误。我尝试更改函数的添加到结尾部分,但似乎看不出有什么问题。
这是我添加到结尾的方式
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;
解决方案
我看到的一件事是,当您在 for() 循环中初始化指针时,您正在跳过链表的第一个成员。如果您的列表为空怎么办?这不会在末尾添加一个节点。
推荐阅读
- ansible - 调试http post请求ansible
- python-3.x - 如何从python文件访问数组值
- vbscript - 我无法使用 VBS 提取特定字符串
- python - 在 Python 中计算回报和波动率的更有效方法
- c++ - 有没有办法将数字作为字符串,并且不使用浮点数或双精度数,将其四舍五入到确切的位数?
- ignite - 引发 QueryCursor 中的序列化问题
- c# - 有没有办法在具有某些规格的winforms c#中动态调整壁虎浏览器的大小?
- javascript - 每次单击复选框时检测一次单击
- python - 如何从 apscheduler 访问返回值?
- javascript - Firebase Cloud Functions 未写入数据库