模拟进程队列管理——进程入队

来源:互联网 发布:教师网络研修收获 编辑:程序博客网 时间:2024/06/06 10:39

1.动态地输入进程队列,如1,3,4,2
2.入队进程x(若有x,则提示已存在)
3.进程入队(放置在队列尾巴):1,3,4,2,x

#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 *append(node *head,node *q)  /*增加一个进程进入队列*/    {        node *p=head;        if(!p)            return q;        else        {        while(p->next)           p=p->next;        p->next=q;        q->next=NULL;        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=append(p,q);        printf("\nappend_processpcb queue is:\n");        print(p);    }
原创粉丝点击