下面的程序 有三句不明白是什么意思 请指教 谢谢! p->next=L->next; L->next=p; L=L->n

问题描述:

下面的程序 有三句不明白是什么意思 请指教 谢谢! p->next=L->next; L->next=p; L=L->next;
//此程序是从网上复制的! ! !
#include
using namespace std;
typedef double ElemType;//double类型可以换成其他的
typedef struct RLNode
{
//定义循环链表的节点
ElemType data;
struct RLNode *next;
}RLNode,*RLinkList;
//-------------------------------------------
void CreateList_RL ( RLinkList & L);//创建一个循环链表
void ScanList_RL ( RLinkList L);//遍历循环链表
void DeleteList_RL ( RLinkList & L,int K,ElemType X);//删除第K个节点以及删除值为X的点
//------------------------------------------
void main()
{
RLinkList L=(RLinkList) malloc ( sizeof(RLNode) );
L->next=L;//创建空的循环链表
cout
1个回答 分类:综合 2014-12-02

问题解答:

我来补答
整个的意思是,生成一个新的节点,并将其插入到数据链中(应该是一个闭合的链,就是头尾相连).
L是整个链中的初始节点,仅一个节点时,节点的next指向自己.也作为最后一个节点.
新节点p,将被作为最后一个节点插入数据链中.
RLinkList p= (RLinkList) malloc ( sizeof(RLNode) );//生成数据节点空间
p->data=t; //保存节点的数据,t是输入的数据,也是节点中的数据
p->next=L->next; // L代表最后一个节点(应该是last的字头),L的next是指向头的,p将作为最后一个节点
L->next=p; // p将作为L的下一个节点,即新的最后一个节点
L=L->next; // 将最后一个节点设置为p,此句实际上就是, L=p;
再问: L->next=p 的意思是将两个节点 连起来 对吧? L=L->next; 是不是应该写成L=p->next 呢?因为p是最后一个节点 而且p->next=L->next;也是 将 本来指向L的L->next 赋给了p->next 这样不就形成一个环了吗
再答: L->next=p 的意思是将两个节点 连起来 对吧? 是将p链接到L的下一个节点上。 此时,L不是最后一个节点了。 L=L->next; 是不是应该写成L=p->next 呢?因为p是最后一个节点 而且p->next=L->next;也是 将 本来指向L的L->next 赋给了p->next 这样不就形成一个环了吗 L=L->next; 不应该写成L=p->next ,而可以写成L=p; 通过上一个操作,L已经不是最后一个节点了。L中的next是最后一个节点,也就是p。通过此操作后,L又成了最后一个节点。
再问: 使链表形成闭合的环的步骤 是 p->next=L->next 和 L->next=p; 而 L=L->next; 是让L永远指向 最后一个节点 对吗?
再答: 对
 
 
展开全文阅读
剩余:2000