C 这是将链表的第一个节点设置为该节点之后的节点的有效方法吗?

C 这是将链表的第一个节点设置为该节点之后的节点的有效方法吗?,c,linked-list,C,Linked List,这就是我想在视觉上做到的: 1->2->3->4 to 2->3->4 (Basically unlink 1) struct Courses{ char *courseName; int creditValue; Courses *next; };Courses; struct Student{ char *name; int ag

这就是我想在视觉上做到的:

1->2->3->4  to  2->3->4   (Basically unlink 1)

 struct Courses{
            char *courseName;
            int creditValue;
            Courses *next;
        };Courses;

struct Student{
        char *name;
        int age;
        Courses *list;  //First course (node)
    }Student;

Student student1;

Courses curr = student1->list

curr = curr->next;                  <----- The statement I am questioning
1->2->3->4到2->3->4(基本上取消链接1)
结构课程{
char*courseName;
国际信用价值;
课程*下一步;
};课程;
结构学生{
字符*名称;
智力年龄;
课程*列表;//第一个课程(节点)
}学生;
学生1;
课程curr=student1->list

当前=当前->下一步;其次
相当于使节点1成为节点1所指向的节点2。如果我错了,请纠正我

这是对的。不过,请记住,您只更改了当前的
curr
。您没有更改
student1->list
。这仍然指向第一道菜
curr
只是一个临时变量,现在指向第二个过程。另一件需要注意的事情是,如果您取消链接动态分配的节点(通过
malloc
),那么您需要
释放它,然后再忘记它。否则你会漏掉记忆,我不知道。测试时发生了什么?很难回答这个问题,因为您混淆了值和指针。那么,我们应该提到这一点,还是这是一个概念性的问题,代码完全错误的事实与此无关?@ArjunShankar我的意图是在不实际键入student1->list的情况下实际更改student1->list。我有办法做到这一点吗?