首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问一道编程题,麻烦各位帮忙看看

2013-04-20 
请教一道编程题,麻烦各位帮忙看看。首先,这道题的题目是:假定就绪状态的进程按其优先级自小到大顺序排成队

请教一道编程题,麻烦各位帮忙看看。
首先,这道题的题目是:
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。

相关答案:

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


谁能告诉俺,上面这段代码是什么意思啊!?看不懂。
[解决办法]
链表搜索插入.

每一条数据都有一个 .Next 表示它的下一行的地址,如果为NIL则是最后一跳记录.

插入的时候,只需要把前一行的Next改称插入的行地址,把插入行的Next改成原来的下一行地址即可.
[解决办法]
引用:
首先,这道题的题目是:
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。

相关答案:
Delphi/Pascal code?12345678910111213141516171819var head , p ,q , addpcb:link begin       if head ……

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

热点排行