#include <malloc.h>#include <stdio.h>#include <string.h>typedef struct processpcb{int id;/*??*/struct processpcb *next;}node;node *creat(void)//??{node *head, *p1, *p2;int 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;elsep2->next = p1;p2 = p1;p1 = (node*)malloc(sizeof(node));scanf("%d", &p1->id);}p2->next = NULL;free (p1);return head;}void print(node *head){node *p;p = head;if (head != NULL)do {printf("%d\t", p->id);p = p->next;} while (p != NULL);}/*??????????*/node *del(node *head,int pcb){node *p, *q;p = head;if (!head)printf("not found!");else {if (p->id == pcb && !p->next) {//???free(p);return NULL;} else if (p->id == pcb && p->next) {head = head->next;free(p);return head;} else {while (p && p->id != pcb) {q = p;p = p->next;}if (!p)printf("not found!");else {q->next = p->next;free(p);return head;}}}}int main(void){node *p; int pcbid; p = creat(); printf("\ndel a processpcb\n"); scanf("%d",&pcbid); printf("\ninit_processpcb queue is:\n"); print(p); p = del(p,pcbid); printf("\ndel_processpcb queue is:\n"); print(p); return 0;}