数据结构(C语言版),单链表问题?

如题:在一个单链表中,若要指针q所指结点的前面插入一个p所指的结点,则执行( )?

A、q->next=p->next;p->next=q
B、p->next=q->next;q=p
C、q->next=p->next;q->next=p
D、p->next=q->next;q->next=p

并解释一下q->next=p->next和p->next=q->next都是什么意思?

谢谢

D正确
q->next=p->next的意思:让q中指向下一个节点的指针指向p的下一个节点
此题中p还没有插入队列,所以p的下一个节点不确定,所以这个语句错误。
p->next=q->next意思:让p中指向下一个节点的指针指向q的下一个节点
此题中,这条语句执行完后再让q 的下一个节点指向p就达到目的
可能说的不是很清楚,你可以看看课本上的图例
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-06-01
D:p->next=q->next;q->next=p
q->next=p->next:是说q指向p的next
p->next=q->next:是说pj指向q的next
第2个回答  2007-06-01
题目好像说q节点前面插入p节点,所以很明显应该有p->next=q
的关系了,答案是A
q->next=p->next,是说q节点的下一个节点就是p节点的下一个节点,或者这样说,展示将节点的结构划分为数据域和地址域,而q节点的地址域与p节点的地址域有相同的指向,你在草稿本上画一下就明白了
p->next=q->next,同理
第3个回答  2007-06-01
呵……D正确。
楼上解释几近完美,顶!无补充。