gpt4 book ai didi

c - 结构链表 - 如何编辑数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:04 24 4
gpt4 key购买 nike

这是我的结构和我添加的节点。我的插入功能没问题,但是当我稍后尝试添加 Course_Student 数据时,通过搜索学生的 uId 并将数据添加到该特定节点;我的列表被删除了,什么也没有显示。然后当我添加另一个节点时,Course_Student 数据以一种奇怪的方式显示。以后如何将 My Course_Student 数据添加到一个特定节点?

typedef struct stdnt Student ;
typedef struct crs_std Course_Student;

struct crs_std{
int crs_code;
char name[20];
float grade;
int unt;
};

struct stdnt {
char firstname[20];
char lastname[20];
Course_Student a[10];
unsigned long long uID;
int year;
float avg;
};

struct Linked_list_Student{

Student s;
Node_s *next_s ;

这是我在插入数据后用来向我的链表添加数据的函数。

void Select_Course(NodePtr_s *startPtr_s, Course_Student cs[10], int id){
int i;
NodePtr_s prevPtr_s;
NodePtr_s currPtr_s;
for(i=0;i<n;i++){

if((*startPtr_s)->s.uID == id){

(*startPtr_s)->s.a[i].crs_code = cs[i].crs_code;
strcpy((*startPtr_s)->s.a[i].name,cs[i].name);
(*startPtr_s)->s.a[i].unt = cs[i].unt;

}

prevPtr_s = (*startPtr_s);
currPtr_s = (*startPtr_s)->next_s;

while(currPtr_s != NULL){

if(currPtr_s->s.uID == id){

currPtr_s->s.a[i].crs_code = cs[i].crs_code;
strcpy(currPtr_s->s.a[i].name,cs[i].name);
currPtr_s->s.a[i].unt = cs[i].unt;

}

prevPtr_s = currPtr_s;
currPtr_s = currPtr_s->next_s;
}


}

}

最佳答案

在你的 for 循环中:

for(i=0;i<n;i++){

...n 是什么?看起来 n 可能是全局设置为 10,用于循环 cs?如果是这样,那么您的方法不是最好的。看来你是:

foreach element in cs
find the correct student record
add that element from cs to the student record

但听起来 cs 中的所有元素都应该添加到同一个学生记录中?如果是这样,你真的应该这样做:

find the correct student record
foreach element in cs
add that element to the student record

请确认这是您要实现的目标,然后我或这里的其他人可以帮助您使用正确的算法。

此外,请确保缩进正确,以便人们可以轻松阅读您的代码:

    while(currPtr_s != NULL){

if(currPtr_s->s.uID == id){

currPtr_s->s.a[i].crs_code = cs[i].crs_code;
strcpy(currPtr_s->s.a[i].name,cs[i].name);
currPtr_s->s.a[i].unt = cs[i].unt;

}

prevPtr_s = currPtr_s;
currPtr_s = currPtr_s->next_s;
}

应该是

    while(currPtr_s != NULL){

if(currPtr_s->s.uID == id){

currPtr_s->s.a[i].crs_code = cs[i].crs_code;
strcpy(currPtr_s->s.a[i].name,cs[i].name);
currPtr_s->s.a[i].unt = cs[i].unt;

}

prevPtr_s = currPtr_s;
currPtr_s = currPtr_s->next_s;
}

关于c - 结构链表 - 如何编辑数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com