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;
               add->next:=p
       end;
end

解决方案 »

  1.   

    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) //循环直到 空或...(pri不知道是什么)
                  do begin 
                        q:=p; //取得前一个节点
                        p:=p->next
                  end; //此时q为符合的最后一个进程
                  q->next:=addpcb; //新进程加到q的后面
                  addpcb->next:=p //把不符合的第一进程接到新进程的后面
          end; 
    end