单链表插入成节点小问题

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;
}
...全文
126 点赞 收藏 2
写回复
2 条回复
熊熊大叔 2014年02月10日
1. 可以增强容错性,比如链表中的数据出错了可以避免错误扩大。 2. 对于这种不相关的条件之间可以互换
回复 点赞
sduxiaoxiang 2014年02月10日
i<pos-1找到适合的位置 while(i<pos-1 && !p)和原来的没区别,反正两个条件不相关
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告