模拟进程管理——进程出队

来源:互联网 发布:手机阅读word软件 编辑:程序博客网 时间:2024/06/05 03:03

1.动态地输入进程队列,如1,3,4,2
2.出队方式
3.队首进程出队
4.队中进程出队(选定进程)
5.队尾进程出队
6.根据进程id选择一个进程出列(若不存在该进程,则提示不存在)

#include <malloc.h>    #include <stdio.h>    #include <string.h>    #define NULL 0    typedef struct processpcb    {        int id;/*进程控制块编号*/        struct processpcb *next;    }node;    int n;    node *creat(void)   /*建立进程控制块队列表*/    {        node *head,*p1,*p2;        n=0;        printf("Input processpcb table:ID\n");        p1=p2=(node *)malloc(sizeof(node));        scanf("%d",&p1->id);        head=NULL;        while (p1->id>0)        {            n=n+1;            if (n==1) head=p1;            else p2->next=p1;            p2=p1;            p1=(node *) malloc (sizeof(node));            scanf("%d",&p1->id);        }        p2->next=NULL;        return(head);    }    node *del(node *head,int pcb)    {        node *p=head,*q;        q=p->next;        if(p->id==pcb)            return q;        while(q&&q->id!=pcb)        {            p=q;            q=q->next;        }        if(p->id=pcb)        p->next=q->next;        return head;    }    void print (node *head)  /*输出链表*/    {        node *p;        p=head;        if(!p)   printf("链表为空!");        else        {            printf("元素为:");            while(p)            {                printf("%5d",p->id);                p=p->next;            }        }    }    int main()    {        node *p,*q;        int pcbid;        p=creat();        printf("\nappend a processpcb\n");        scanf("%d",&pcbid);        q=(node *)malloc(sizeof(node));        q->id=pcbid;        q->next=NULL;        printf("\ninit_processpcb queue is:\n");        print(p);        p=del(p,pcbid);        printf("\nappend_processpcb queue is:\n");        print(p);    }
原创粉丝点击