64. i=i-1;
65. (*L)=(*L)->next;
这两行代码在视频中没有打出来,输入负数时运行出错,是为什么? 河海陈独秀 发表于 2018-1-30 16:30
64. i=i-1;
65. (*L)=(*L)->next;
鱼油你好,我也被这个问题困扰了好久,后来仔细阅读代码发现
初始化(*L)指针时其前驱后继都指向NULL,
初始化完毕后(*L)的前驱仍指向NULL,所以编译器会报错,
做法:将指针(*L)指向下一个进入循环,那么(*L)本身不参与循环也就没有空指针了 1 1 cagescott 发表于 2018-5-15 23:20
鱼油你好,我也被这个问题困扰了好久,后来仔细阅读代码发现
初始化(*L)指针时其前驱后继都指向NULL,
...
其他代码同视频一样,修改
void Caesar(DuLinkList *L, int i)
{
if(i > 0)
{
do
{
(*L) = (*L)->next;
}while(--i);
}
if(i < 0)
{
(*L) = (*L)->next;
do
{
(*L) = (*L)->prior;
}while(i++);
}
} hello world!! 求作业答案 111 cagescott 发表于 2018-5-15 23:20
鱼油你好,我也被这个问题困扰了好久,后来仔细阅读代码发现
初始化(*L)指针时其前驱后继都指向NULL,
...
不会吧,循环链表搭建好之后,前驱都是有固定的的指向的啊 liwenyang 发表于 2020-10-22 20:32
不会吧,循环链表搭建好之后,前驱都是有固定的的指向的啊
不过你这么说好像也是这个道理
liwenyang 发表于 2020-10-22 20:32
不会吧,循环链表搭建好之后,前驱都是有固定的的指向的啊
我仔细想了想,我认为前驱确实是指向空的,但是后继并不是指向空的,如果后继是指向空的话,那么*L根本无法拿来用, 加油 {:5_90:} 1
呃呃呃 回复
shiyideliutang 发表于 2019-9-8 20:43
其他代码同视频一样,修改
16行得用(*L)= (*L)->next->prior->prior吧 直接用(*L)->prior显示出错了
页:
[1]
2