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

靠谱的程序员 2013-01-27 03:12:11
首先,这道题的题目是:
假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。

相关答案:
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


谁能告诉俺,上面这段代码是什么意思啊!?看不懂。
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsfzxjy 2013-01-29
  • 打赏
  • 举报
回复
引用 楼主 zanbiyaJJ 的回复:
首先,这道题的题目是: 假定就绪状态的进程按其优先级自小到大顺序排成队列,当有一进程要进入就绪队列时,应按它的优先级排在相应位置上,试写出进程入队的程序。 相关答案: 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应处的位置再插入。 建议你先学习有关链表的操作。。
sanguomi 2013-01-27
  • 打赏
  • 举报
回复
就是链表的普通操作。
蓝色光芒 2013-01-27
  • 打赏
  • 举报
回复
链表搜索插入. 每一条数据都有一个 .Next 表示它的下一行的地址,如果为NIL则是最后一跳记录. 插入的时候,只需要把前一行的Next改称插入的行地址,把插入行的Next改成原来的下一行地址即可.
靠谱的程序员 2013-01-27
  • 打赏
  • 举报
回复
怎么木人回答!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧