模拟进程队列的理(出入队).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟进程队列的管理(出入队)(红色字体为再思考修改处) 操作系统实验一 实验题 (1)模拟双向链接队列的出入队 (2)要求:写出算法思想(程序流程图或自然语言描述) (3)提交形式:以学号+姓名创建一个文件夹,里面必须包含(源程序.CPP、可执行程序.exe、算法思想文档.doc) … … 可将其转换为: front rear head 源代码为: /******创建双向链表模拟进程队列管理(出入队)(有前后指针之分的带头结点),放在文件dlnkqueue.h 中*******/ typedef int datatype; typedef struct dlink_node { datatype info; struct dlink_node *llink,*rlink; }dnode; typedef struct//封装带头结点前后指针 { dnode *front,*rear; }queue; /********双向链表置空**********/ queue *init() { queue *head; head=(queue*)malloc(sizeof(queue)); head-front=NULL; head-rear=NULL; return head; } /*******输出双向链表元素**********/ void print(queue *head) { dnode *p; p=head-front; if(!p)printf(进程队列为空!\n); else { printf(进程队列为:\n); while(p) { printf(%d ,p-info);p=p-rlink; } } } /*********查找元素X是否存在*********/ dnode *find(queue *head,datatype x) { dnode *p=head-front; while(pp-info!=x) p=p-rlink; if(!p)return NULL; else return p; } /***********在队尾插入**********/ queue *append(queue *head,datatype x) { dnode *p,*q; p=(dnode*)malloc(sizeof(dnode)); p-info=x; if(!head-front)//原进程中队列中无进程// { head-front=head-rear=p; p-llink=NULL; p-rlink=NULL; } else//原进程队列中有进程// { q=head-front; while(q-rlink) q=q-rlink; p-rlink=q-rlink; p-llink=q; q-rlink=p; head-rear=p; } return head; } /*********删除X********/ queue *dele(queue *head,datatype x) { dnode *q; q=find(head,x); if(!q) {printf(该进程%d找不到,无法出队!\n,x);return NULL;} else { //队首出队// if(q-llink==NULL) { head-front=q-rlink; q-rlink-llink=NULL; } //队尾出队// else if(q-rlink==NULL) { head-rear=q-llink; q-llink-rlink=NULL; } //队中出队// else { q-llink-rlink=q-rlink; q-rlink-llink=q-llink; } free(q);return head; } } /********创建输入双向链表元素*********/ queue *creat(queue *head) { datatype x; scanf(%d,x); while(x!=-999) { head=append(head,x); scanf(%d,x); } return head; } /******模拟进程队列的管理(出入队)(带前后指针的头结

文档评论(0)

huang37168huan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档