关于链表中指针赋值的问题。

2025-04-14 08:03:50
推荐回答(1个)
回答1:

首先LinkList是一个Node类型的指针类型,
即(LinkList)等价于(Node *).
然后您这个方法是删除某个制定节点,
您说的"q=p->next "这句之前的程序就是找到制定节点,i节点的前驱节点p.
注意在这句"q=p->next "之前q是没有任何初始化,即没有指向的.
我姑且理解为您说的"q->next=p->next"这一句的位置是指替换"q=p->next "的位置,那么对于没有初始化的指针q,取出它的next成员再赋值这一过程本身就是错的.
然后为什么可以"q=p->next "?注意q和p都是LinkList类型,然后注意看Node节点声明里面,next也应该等价为LinkList类型(可能是声明为Node*next),所以"q=p->next "两端都是一个类型当然可以赋值了.
至于"我看书上说不能把B结构体中的成员直接赋值给A结构体",
是指这种情况, 比如结构体A和B里都声明了好几个int成员,然后,把B的某个成员赋值给A肯定不行了,以为成员的类型是int,A的类型是结构体.类型不同自然无法赋值.
您再仔细看看书上相关字眼,以及我回答的理解下!