下面的程序 有三句不明白是什么意思 请指教 谢谢! 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
人气:291 ℃ 时间:2020-06-24 21:33:53
解答
整个的意思是,生成一个新的节点,并将其插入到数据链中(应该是一个闭合的链,就是头尾相连).
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永远指向 最后一个节点 对吗?对
推荐
猜你喜欢
- 小东看叔叔锯木头,锯一次木头要2分钟,叔叔把木头锯成5段,叔叔请小东算一算需要几分钟?
- 一辆汽车从A地开往B地,前3小时行了180千米,照这样的速度,还要1.5小时才能到达,AB两地相距多远?
- 你让我感到害怕,英语怎么说?
- 某同学做了一次较为精确的测定匀加速直线运动的加速度的实验,实验所得到的纸带如图所示,设0点是计数的起始点,两计数点之间的时间间隔为0.1s,则第一个计数点与0点的距离s1应为__________cm,物体的加速度________
- “我”上学了,还是不断收到姥姥寄来的剪纸,其中表达姥姥对‘我’的期待的一副剪纸是这样的
- 三七五折等于几成
- 小红计算两个数的加法时,把其中一个加数个位上的0漏掉了,结果算出的和是37,已知正确答案是91,那么这
- 如图所示的是闭合电路的一部分导体在两磁极间的运动情形.图中小圆圈代表导体的横截面,a、b、c、d表示运动中四个不同位置.图中箭头表示在那个位置上的运动方向.导体在_位置会产