資源簡介
系統能模擬出銀行叫號機的叫號及顯示功能,同時顯示出顧客到號碼和窗口號,為顧客起指示作用。
代碼片段和文件信息
#include
#include
#include
#include
#include
#include
sem_t?myinsert;
pthread_t?thread[4];
int?num;
//////////////////////////////////////////
//定義隊列結點類型
typedef?struct?QueueNode
{
???????int?id;????
???????struct?QueueNode?*link;
}?QueueNode;
///定義隊列結點的頭指針,為指針?
typedef?struct?Queue
{??
???????QueueNode?*front;????
???????QueueNode?*rear;
}Queue;?
//////////////////////////////////////////
//隊列初始化
Queue*?QueueInit()
{???
?????Queue*?q;????
?????QueueNode?*P;????
?????q?=?(Queue*)malloc(sizeof(Queue));//申請頭,尾指針結點?????
?????P?=?(QueueNode?*)malloc(sizeof(QueueNode));//申請頭結點?????
?????P->link?=?NULL;????
?????q->front?=?q->rear?=?P;????
?????return?q;?
}
///////////////////////////////////////
int?isQueueEmpty(Queue?*q)
{
????return(q->front==q->rear);
}
/////////////////////////////////////////
//入隊
void?QueueAdd(Queue*?qint?x)
{????
?????QueueNode?*p;????????
?????p?=?(QueueNode?*)malloc(sizeof(QueueNode));//申請新結點?????
?????p->id?=?x;????
?????p->link?=?NULL;????
?????q->rear->link?=?p;???????
?????q->rear?=?p;
}?/////////////////////////////////////////
//讀取?
int?QueueGet(Queue*?q)
{????
?????int?x;???????
?????if(!isQueueEmpty(q))????
?????{???????????????
??????????????x?=?q->front->link->id;???????
??????????????return?x????
?????}????
?????else?????????
???????return??num;
}?
/////////////////////////////////////////////
void?Queuemyremove(Queue?*q)
{
?????QueueNode?*p;
?????if(!isQueueEmpty(q))
?????{
?????????p=q->front->link;
?????????q->front->link=p->link;
?????????p->link=NULL;
?????????free(p);
?????????if(q->front->link==NULL)
?????????q->rear=q->front;
?????}
}?
//////////////////////////////
Queue?*q;
///////////////////////////////
void?mycall(int?nint?m)
{
?????print
評論
共有 條評論