一个程序的实现?

liuweiwei1 2002-07-24 02:52:04
Lindlist Demo(Lindlist) {//L是无头结点的单链表
ListNode *Q,*P;
if(L&&L->next) {
Q=L;L->next;P=L;
whil(P->next) P=P->next;
P->next=Q; Q->next=NULL;
}
return L;
}//Deno

此程序实现功能:把单链表的第一个结点加到了链尾。返回的L指向原链表的第二个结点。

问题:为什么实现以上功能?
...全文
152 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
stidio_zhougang 2002-09-01
  • 打赏
  • 举报
回复
让一个链表的头指针前移一个节点,把第一个节点放在最后一个位置。
也就是说如果原来的链表为:
1->2->3->4->5->6->7->8
运行这一部分后变为:
2->3->4->5->6->7->8->1
guanying 2002-09-01
  • 打赏
  • 举报
回复
单向链表。
liuweiwei1 2002-09-01
  • 打赏
  • 举报
回复
到底是不是循环?
JanePeter 2002-08-16
  • 打赏
  • 举报
回复
my god!
这个函数,在做这么复杂的东西干什么?
可以:1:先直接把链表指针指想第2个接点。
   2:在用循环把一个指示指针搜索到表尾
   3:把原来的头,放到表尾。
我认为这样比较逻辑清楚,并且这样的风格不错。
<The practice of programming>说,要清楚!逻辑越简单越好!
qfsb_p 2002-08-16
  • 打赏
  • 举报
回复
我也长了经验值,谢谢!
不解 2002-08-04
  • 打赏
  • 举报
回复
这有什么可以分析的,但链表操作,只是把头单元删除,又加到了尾部罢了!
glassshark 2002-07-27
  • 打赏
  • 举报
回复
环形链表。
apao 2002-07-25
  • 打赏
  • 举报
回复
bobob(bobob) 说得对,对不起,是我没看清楚。不过前面说的是对的
xiaoningyb 2002-07-24
  • 打赏
  • 举报
回复
注意:
Q是指向头接点
L=L->next让L指向第二个节点,
这时调用让p指向最后的节点,
然后让p指向q(即第一个节点)
返回L(即第二个节点的指针)
bobob 2002-07-24
  • 打赏
  • 举报
回复
apao(呆傻儿童) 你看清楚,最后q->next=null;哪来循环?!!


Lindlist Demo(Lindlist) {//L是无头结点的单链表
ListNode *Q,*P;
if(L&&L->next) {//如果L和L->next都不空,则:
Q=L; //让Q和L指向同一个单元!!
L=L->next; //L后移一个位置
P=L; //让此刻的L又和P指向同一个单元(第二个)
while(P->next)
{P=P->next;} //P此时指向最后一个单元
P->next=Q; //在P后增加一个接点Q(即第一个接点),此时为循环连表
Q->next=NULL; //让链表从第一个接点处断开!!!
}
return L;//返回原链表第二个接点的指针
}//Deno程序结束
Tipel 2002-07-24
  • 打赏
  • 举报
回复
画个图比较好理解
可是csdn的论坛上搞图太不方便
自己拿笔画一下吧
就照数据结构的方式画阿。
bary1980 2002-07-24
  • 打赏
  • 举报
回复
Lindlist Demo(Lindlist) {//L是无头结点的单链表
ListNode *Q,*P;
if(L&&L->next) {
Q=L;
L=L->next;
P=L;
while(P->next)
{P=P->next;}
P->next=Q;
Q->next=NULL;
}
return L;
}//Deno
从新写了,这样的格式比较清晰了
zersan 2002-07-24
  • 打赏
  • 举报
回复
看这种东西其实主要是逻辑要清晰
apao 2002-07-24
  • 打赏
  • 举报
回复
其实得到了一个单向循环链表
apao 2002-07-24
  • 打赏
  • 举报
回复
首先,"L->next;"这句是不是写错了?应该是"L=L->next;"吧?
执行了
Q=L;L=L->next;P=L;
whil(P->next) P=P->next;
后,L指向了原链表的第二个结点,而P指向最后一个节点。然后P->next=Q; Q->next=NULL;
因为Q是指向原链表第一个结点的,所以执行上面两句后,最后一个节点的next指向了第一个节点,即单链表的第一个结点加到了链尾;而L依然指向原链表的第二个结点。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧