新手,请教一个C的小问题,请大家帮帮忙.感谢!

新手,请教一个小问题,请大家帮帮忙。

sort()
{
PCB *first, *second;
int insert=0;
if((ready==NULL)||((p->ntime)<(ready->ntime)))
{
p->link=ready;
ready=p;
}
else
{
first=ready;
second=first->link;
while(second!=NULL)
{
if((p->ntime)<(second->ntime))
{ p->link=second;
first->link=p;
second=NULL;
insert=1;
}
else
{
first=first->link;
second=second->link;
}
}
if(insert==0)
first->link=p;
}
}
在上面这个程序中insert=0和insert=1的作用是什么?谢谢了!
[651 byte] By [onlybb33-小皮蛋] at [2008-1-9]
# 1
insert作为一个标志,根据它来决定后面的语句执行不执行.
p是什么东西?
mochen5460-mochen at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...
# 2
标记在while循环中,p是否已经插入到PCB链表
如果insert==0,p就追加到链表的末尾

简化一下:
else
{
first = ready;
while(first->link && (p->ntime)>=(first->link->ntime))
{
first = first->link;
}
p->link=first->link;
first->link=p;
}
# 3
明白了,感谢大家的帮助。但
first->link && (p->ntime)>=(first->link->ntime)
不是很明白。
onlybb33-小皮蛋 at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...
# 4
比较相邻两个节点的时间大小的,其中判断first->link是否为空,是防止first->link->ntime
操作错误
lei001-太极 at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...
# 5
OK,明白.谢谢!
onlybb33-小皮蛋 at 2007-10-19 > top of Msdn China Tech,C/C++,C语言...