首先,这道题的题目是:
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。相关答案:
var head , p ,q , addpcb:link
begin
if head = nil
then begin
head:=addpcb;
head->next = nil
end;
else begin
p:=head ;
while (p <= nil) and (addpcb->pri >= p->pri)
do begin
q:=p;
p:=p->next
end;
q->next:=addpcb;
addpcb->next:=p
end;
end谁能告诉俺,上面这段代码是什么意思啊!?看不懂。
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。相关答案:
var head , p ,q , addpcb:link
begin
if head = nil
then begin
head:=addpcb;
head->next = nil
end;
else begin
p:=head ;
while (p <= nil) and (addpcb->pri >= p->pri)
do begin
q:=p;
p:=p->next
end;
q->next:=addpcb;
addpcb->next:=p
end;
end谁能告诉俺,上面这段代码是什么意思啊!?看不懂。
其次,这段代码用的是链表操作从代码上看Link因为链表结构:
type
Link=^Node;
Node=record
pri:Integer;//保存本节点值
Next:Link;//保存下一结点指针
end;
上面这段代码是想在链表head中插入数据addpcb,其思路是:如果head为空,则head:=addpcb,否则就查找addpcb应处的位置再插入。
建议你先学习有关链表的操作。。