非循环单链表执行插入之前判断条件的有关问题
非循环单链表执行插入之前判断条件的问题
在学数据结构课程<c语言版>
关于非循环单链表的插入操作:
在执行插入操作之前,要判断这个链表是否为空,插入或者删除的位置是否合适
下面几行代码完全解决了以上的问题,无论怎么插入都可以,可以说是万能公式了:
我的理解如下<不知道理解是否正确>:
while循环语句的作用是让指针p不断的往后移动,直到p指向这个插入位置的结点,比如我要在第3个结点之前插入一个值,我先通过移动p让p指向第3个结点
if语句就是来判断这个结点是否存在,比如你要往第3个结点之前插入一个值,这个结点都不存在,你怎么插入?
可是还有疑惑如下:
if语句中的i>pos-1这个东西起到什么作用,while循环中的条件就是i<pos-1,无论怎么移动,i的值也不会大于pos-1啊,感觉这个条件没什么用?我只要判断此时的p是不是空不就行了吗?
最后,谢谢大家,分不多,一点心意,麻烦大家帮我分析分析!
------解决方案--------------------
if语句就是来判断这个结点是否存在,比如你要往第3个结点之前插入一个值,这个结点都不存在,你怎么插入?
如果只有1个结点,要求在第3个结点之前插入一个值,神都帮不了你,p == NULL, 退出循环, return false;
------解决方案--------------------
如果一开始就“i>pos-1”呢?
while进不去,缺少“i>pos-1”的if也不能正确处理这种边界条件。
要考虑所有的情况。
------解决方案--------------------
我敢说这段代码的原作者也不是一蹴而就,而是千锤百炼之后打磨出来的。
程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George
在学数据结构课程<c语言版>
关于非循环单链表的插入操作:
在执行插入操作之前,要判断这个链表是否为空,插入或者删除的位置是否合适
下面几行代码完全解决了以上的问题,无论怎么插入都可以,可以说是万能公式了:
while (p && i<pos-1)
{
p = p->pNext;
i++;
}
if (!p || i>pos-1)
return false;
我的理解如下<不知道理解是否正确>:
while循环语句的作用是让指针p不断的往后移动,直到p指向这个插入位置的结点,比如我要在第3个结点之前插入一个值,我先通过移动p让p指向第3个结点
if语句就是来判断这个结点是否存在,比如你要往第3个结点之前插入一个值,这个结点都不存在,你怎么插入?
可是还有疑惑如下:
if语句中的i>pos-1这个东西起到什么作用,while循环中的条件就是i<pos-1,无论怎么移动,i的值也不会大于pos-1啊,感觉这个条件没什么用?我只要判断此时的p是不是空不就行了吗?
最后,谢谢大家,分不多,一点心意,麻烦大家帮我分析分析!
------解决方案--------------------
if语句就是来判断这个结点是否存在,比如你要往第3个结点之前插入一个值,这个结点都不存在,你怎么插入?
如果只有1个结点,要求在第3个结点之前插入一个值,神都帮不了你,p == NULL, 退出循环, return false;
------解决方案--------------------
如果一开始就“i>pos-1”呢?
while进不去,缺少“i>pos-1”的if也不能正确处理这种边界条件。
要考虑所有的情况。
------解决方案--------------------
我敢说这段代码的原作者也不是一蹴而就,而是千锤百炼之后打磨出来的。
程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George