首先,这道题的题目是:
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。相关答案:
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谁能告诉俺,上面这段代码是什么意思啊!?看不懂。

解决方案 »

  1.   

    链表搜索插入.每一条数据都有一个 .Next 表示它的下一行的地址,如果为NIL则是最后一跳记录.插入的时候,只需要把前一行的Next改称插入的行地址,把插入行的Next改成原来的下一行地址即可.
      

  2.   

    首先,这段是伪代码
    其次,这段代码用的是链表操作从代码上看Link因为链表结构:
    type
      Link=^Node;
      Node=record
             pri:Integer;//保存本节点值
             Next:Link;//保存下一结点指针
           end;
    上面这段代码是想在链表head中插入数据addpcb,其思路是:如果head为空,则head:=addpcb,否则就查找addpcb应处的位置再插入。
    建议你先学习有关链表的操作。。