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);
}