单链表插入成节点小问题

Ubuntu_OS 2014-02-09 11:48:25
第13行为什么要判断 if(i > pos-1 || p), 直接if (p)不行么,为什么要判断i>pos-1,不多余么, 还有第7行和第13行的 && 和 || 操作数可以写反么? 比如第7行写成 while(i<pos-1 && !p). 谢谢了

//在pHead所指向链表的第pos个节点的前面插入一个新的结点,该节点的值是val, 并且pos的值是从1开始
bool insert_list(PNODE pHead, int pos, int val)
{
int i = 0;
PNODE p = pHead;

while (NULL!=p && i<pos-1)
{
p = p->pNext;
++i;
}

if (i>pos-1 || NULL==p)
return false;

PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
{
printf("动态分配内存失败!\n");
exit(-1);
}
pNew->data = val;
PNODE q = p->pNext;
p->pNext = pNew;
pNew->pNext = q;

return true;
}
...全文
150 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊熊大叔 2014-02-10
  • 打赏
  • 举报
回复
1. 可以增强容错性,比如链表中的数据出错了可以避免错误扩大。 2. 对于这种不相关的条件之间可以互换
sduxiaoxiang 2014-02-10
  • 打赏
  • 举报
回复
i<pos-1找到适合的位置 while(i<pos-1 && !p)和原来的没区别,反正两个条件不相关

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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