小甲鱼老师线性表最后一集的例程代码有些错误
小甲鱼老师数据结构与算法视频中,在线性表最后一集,输入一个数n,改变26个英文字母的顺序。按照小甲鱼老师的源代码,当输入正数和负数时,结果一样。不能达到目的、当输入负数时。结果如图当输入正数时,结果如图:
。。。原因:在函数void Caeser()中,当i<0时。和i>0时,(*L) = (*L)->next,两种情况都将L指针向后移了、
修改:void Caeser(DuLinklist *L, int i){
if(i>0)
{
do
{
(*L) = (*L)->next;
}while(--i);
}
if( i<0 )
{
(*L) = (*L)->next->prior;
do
{
(*L) = (*L)->prior;
}while(++i);
}
}
此时,当输入一个负数时,结果如图:
确实是错了,但是我想问下为什么要加上这句(*L) = (*L)->next->prior;啊! 无耐的小码 发表于 2014-3-26 21:01 static/image/common/back.gif
确实是错了,但是我想问下为什么要加上这句(*L) = (*L)->next->prior;啊!
额。。这是我的改法。。因为*L为头结点里面没有任何数据。而(*L)->next的前驱指针是指向该循环链表的尾部。。这句相当于让*L指向循环链表的尾部。 真是教学相长啊! 恒少-卖身契 发表于 2014-3-27 19:09 static/image/common/back.gif
额。。这是我的改法。。因为*L为头结点里面没有任何数据。而(*L)->next的前驱指针是指向该循环链表的尾 ...
哈哈, 终于懂了!谢谢指导啊!! 无耐的小码 发表于 2014-3-28 08:32 static/image/common/back.gif
哈哈, 终于懂了!谢谢指导啊!!
木事木事,一起交流嘛。 {:1_1:} 激动人
心无法言表 6666666{:5_92:}
页:
[1]