亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pro1.cpp

?? 這是上操作系統課的時候上實驗學習生產者那一部分,這個源代碼是模擬的生產者那部分.
?? CPP
字號:
// pro1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define BUFFSIZE 2
struct PCB
{
	int flag;//1:生產者;0:消費者
	int state;//1:就緒;0:等待
	char name[10];//名字
};
typedef struct QNode
{//定義隊列的結點的結構
	PCB   data;
	struct QNode  *next;
}QNode, *QueuePtr;
typedef struct 
{//定義隊列的結構
	QueuePtr  front;            //隊頭指針   
	QueuePtr  rear;             //隊尾指針
}LinkQueue; 
typedef struct 
{//定義鏈表的結構
	QueuePtr  head;            //鏈表指針   
	int length;             //隊尾指針
}Linklist;   
int Initlist (Linklist &L)
{//初始化鏈表
	L.head=(QueuePtr) malloc(sizeof(QNode)); 
    if(!L.head) exit(0);
    L.head->next=NULL;
	L.length=0;
    return OK;
}
int EnList(Linklist &L,QueuePtr p)
{//入隊
	QueuePtr q;
    q=(QueuePtr)malloc(sizeof(QNode));
    if(!q) 
		exit(0);
	q=L.head->next;
	L.head->next=p;
	p->next=q;
    return OK;
}
int InitQueue (LinkQueue &Q)
{//初始化隊列
	Q.front=Q.rear=(QueuePtr) malloc(sizeof(QNode)); 
    if(!Q.front) exit(0);
    Q.front->next=NULL;
    return OK;
}
int EnQueue(LinkQueue &Q,PCB e)
{//入隊
	QueuePtr p;
    p=(QueuePtr)malloc(sizeof(QNode));
    if(!p) exit(0);
    p->data=e; p->next=NULL;
    Q.rear->next=p;
    Q.rear=p;
    return OK;
}
int DeQueue (LinkQueue &Q,PCB &e)
{//出隊
	QueuePtr p;
    p=(QueuePtr)malloc(sizeof(QNode));
	if(Q.front==Q.rear) return ERROR;
	p=Q.front->next;
	e=p->data;
	Q.front->next=p->next;
	if(Q.rear==p) Q.rear=Q.front;
	free(p);
	return OK;
}
int create(LinkQueue &Q)
{
	int a,i;
	system("cls");
	cout<<endl<<endl<<endl<<endl;
	cout<<"      **************************************************"<<endl;
	cout<<"      *              ^-^ 歡迎使用此系統    ^-^         *    "<<endl;
	cout<<"      *                                                *    "<<endl;
	cout<<"      **************************************************"<<endl;
	cout<<"          請輸入您需要的進程數(請不要輸入過大):";
	cin>>i;
	for(a=0;a<i;a++)
	{
		PCB e;
		cout<<"請輸入第"<<a+1<<"個進程的名字:"<<endl;
		cin>>e.name;
		cout<<endl<<"請輸入這個進程是生產者還是消費者(1為生產者,0為消費者):"<<endl;
		cin>>e.flag;
		e.state=1;//新產生的是就緒隊列,所以開始狀態是1(就緒)
		EnQueue(Q,e);
	}
	cout<<"就緒隊列創建成功,它是:"<<endl;
	QueuePtr p;
	p=(QueuePtr)malloc(sizeof(QNode));
	p=Q.front->next;
	while(p!=NULL)
	{
		cout<<p->data.name<<"    ";
		if(p->data.flag==1)
			cout<<"生產者;"<<endl;
		else
			cout<<"消費者;"<<endl;
		p=p->next;
		
	}
	return OK;
}
void display(LinkQueue &Q)
{
	QueuePtr p;
	p=(QueuePtr)malloc(sizeof(QNode));
	p=Q.front->next;
	while(p!=NULL)
	{
		cout<<p->data.name<<"    ";
		p=p->next;
		
	}
}
int main(int argc, char* argv[])
{
	char c;
	do
	{
		int productnum=0;//已經生產的產品的數目
		int full=0;//緩存是否滿的信號,若為0,則未滿,若為1,則已滿
		int empty=0;//緩存是否為空的信號,若為0,則空,若為BUFFSIZE,則已滿.開始時無資源,所以將其置為空
		char buff[BUFFSIZE];
		int buffpoint=0;//緩存區的指針
		PCB e;
		QueuePtr p;
		p=(QueuePtr)malloc(sizeof(QNode));
		LinkQueue ready,waitcustomer,waitproducer;//產生就緒隊列,生產者隊列,消費者隊列
		InitQueue (ready);
		InitQueue (waitcustomer);
		InitQueue (waitproducer);
		Linklist over;//產生執行鏈表
		Initlist (over);
		create(ready);//生成就緒隊列
		p=ready.front->next;
		while(p!=NULL)
		{
			cout<<endl<<p->data.name<<"申請運行,它是一個";
			if(p->data.flag==1)
			{
				cout<<"生產者";
				if(full==0)
				{//若緩存不為滿,則讓生產者生產物品放入緩存
					cout<<endl<<"批準申請";
					buff[buffpoint]='b';//置為b,意為放入了資源
					buffpoint++;
					empty++;//生產了一個資源,所以 empty+1
					if(buffpoint==BUFFSIZE)
						full=1;//若buff已經滿,則full=1
					DeQueue (ready,e);//從就緒隊列中取出;
					QueuePtr q;
					q=(QueuePtr)malloc(sizeof(QNode));
					q->data=e;
					EnList(over,q);//放入已執行鏈表
				}
				else
				{
					cout<<endl<<"緩存已滿,進入生產等待隊列等待;";
					DeQueue (ready,e);//從就緒隊列中取出;
					e.state=0;//等待
					EnQueue(waitproducer,e);//進入生產等待隊列
				}
			}
			else
			{
				cout<<"消費者";
				if(empty!=0)
				{//若緩存不為空,則讓消費者取資源
					cout<<endl<<"批準申請";
					buff[buffpoint]='a';//把b置為a,意為取出資源
					buffpoint--;
					empty--;//使用了一個資源,所以 empty+1
					if(buffpoint<BUFFSIZE)
						full=0;//buff未滿
					DeQueue (ready,e);//從就緒隊列中取出;
					QueuePtr q;
					q=(QueuePtr)malloc(sizeof(QNode));
					q->data=e;
					EnList(over,q);//放入已執行鏈表
				}
				else
				{
					cout<<endl<<"緩存為空,進入消費等待隊列等待;";
					DeQueue (ready,e);//從就緒隊列中取出;
					e.state=0;//等待
					EnQueue(waitcustomer,e);//進入消費等待隊列
				}
			}
			if(full!=1&&waitproducer.front!=waitproducer.rear)
			{//緩存不為滿且生產者等待隊列不為空時讓生產者等待隊列隊頭的進程進入到就緒隊列中
				DeQueue (waitproducer,e);//從生產者等待隊列中取出;
				cout<<endl<<"由于有了空間"<<e.name<<"進入就緒隊列";
				e.state=1;//再次就緒
				EnQueue(ready,e);//進入就緒隊列
			}
			if(empty!=0&&waitcustomer.front!=waitcustomer.rear)
			{//緩存不為空且消費者等待隊列不為空時讓消費者等待隊列隊頭的進程進入到就緒隊列中
				DeQueue (waitcustomer,e);//從消費者等待隊列中取出;
				cout<<endl<<"由于有了資源"<<e.name<<"進入就緒隊列";
				e.state=1;//再次就緒
				EnQueue(ready,e);//進入生產等待隊列
			}
			p=ready.front->next;//再讓p指向隊頭進程
		}
		cout<<endl<<"就緒隊列沒有進程";
		if(waitcustomer.front!=waitcustomer.rear)
		{
			cout<<endl<<"消費者等待隊列中有進程:"<<endl;
			display(waitcustomer);
		}
		else
			cout<<endl<<"消費者等待隊列中沒有進程:"<<endl;
		if(waitproducer.front!=waitproducer.rear)
		{
			cout<<endl<<"生產者等待隊列中有進程:"<<endl;
			display(waitproducer);
		}
		else
			cout<<endl<<"生產者等待隊列中沒有進程:"<<endl;
		cout<<endl<<endl<<"      還要繼續再試一次么?(Y/N)";
		cin>>c;
	}while(c=='Y'||c=='y');
	system("cls");
	cout<<endl<<endl<<endl<<endl;
	cout<<"      **************************************************"<<endl;
	cout<<"      *                ^-^   謝謝使用    ^-^           *    "<<endl;
	cout<<"      *                                                *    "<<endl;
	cout<<"      *                                                *    "<<endl;
	cout<<"      *                                                *    "<<endl;
	cout<<"      *            信息05-2   伊冰靜   050814226       *"<<endl;
	cout<<"      **************************************************"<<endl;
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品三级av| 欧美大片在线观看一区二区| 亚洲免费在线视频| 色婷婷亚洲精品| 亚洲午夜久久久久中文字幕久| 欧美又粗又大又爽| 日本亚洲免费观看| 久久精品视频免费观看| 成人性生交大片免费看中文| 亚洲视频一区二区在线| 欧美日韩一级二级| 激情综合色播激情啊| 亚洲国产成人午夜在线一区| 91久久免费观看| 美女一区二区在线观看| 欧美激情艳妇裸体舞| 色吧成人激情小说| 秋霞午夜鲁丝一区二区老狼| 久久久蜜桃精品| 在线看不卡av| 狠狠色丁香婷综合久久| 亚洲免费观看高清在线观看| 777久久久精品| 成人国产在线观看| 天天综合日日夜夜精品| 久久久美女毛片| 色婷婷亚洲精品| 经典三级一区二区| 一区精品在线播放| 日韩一级片在线观看| 成人免费av在线| 日本欧美在线观看| 亚洲视频每日更新| 日韩欧美一区二区不卡| av电影在线观看不卡| 免费欧美日韩国产三级电影| 亚洲国产成人自拍| 日韩视频免费观看高清完整版| 成人免费黄色在线| 奇米四色…亚洲| 亚洲欧美日韩一区二区| 精品粉嫩超白一线天av| 99精品久久只有精品| 久久国产精品色| 亚洲一区影音先锋| 国产精品丝袜久久久久久app| 欧美片在线播放| 99国产精品国产精品毛片| 麻豆成人av在线| 樱桃视频在线观看一区| 久久精品亚洲精品国产欧美kt∨| 欧美日韩精品一区二区天天拍小说 | 91久久精品一区二区| 韩国视频一区二区| 亚洲大型综合色站| 综合久久国产九一剧情麻豆| 久久夜色精品一区| 欧美一区二区性放荡片| 欧美少妇xxx| 91在线视频官网| 春色校园综合激情亚洲| 另类小说一区二区三区| 五月婷婷久久综合| 亚洲1区2区3区视频| 亚洲精品写真福利| 亚洲欧洲三级电影| 日本一区二区电影| 久久久久久久久99精品| 日韩视频不卡中文| 欧美一区二区三区成人| 日本精品一区二区三区高清| 99久久99久久精品国产片果冻 | 日韩码欧中文字| 中文字幕第一区二区| 久久影院视频免费| 欧美不卡一区二区三区四区| 日韩一区二区三区免费看| 678五月天丁香亚洲综合网| 欧美天天综合网| 精品视频一区 二区 三区| 欧美亚洲免费在线一区| 欧美性一区二区| 欧美色成人综合| 欧美久久高跟鞋激| 欧美高清dvd| 欧美一区二区三区公司| 日韩一区二区免费视频| 日韩欧美你懂的| 精品国产成人在线影院| 欧美一级日韩不卡播放免费| 欧美日韩五月天| 日韩一区二区电影网| 日韩一区二区三区免费观看| 久久综合精品国产一区二区三区| 久久综合九色综合97婷婷 | 99麻豆久久久国产精品免费 | 在线电影欧美成精品| 777亚洲妇女| 久久久久国产免费免费| 中文字幕中文字幕一区二区| 国产精品成人午夜| 一区二区三区日韩精品| 亚洲成人在线网站| 老汉av免费一区二区三区| 国产黄色精品网站| 一本色道久久综合亚洲精品按摩| 欧美色网站导航| 欧美xfplay| 亚洲视频一二三区| 午夜精品一区二区三区三上悠亚| 久久精品二区亚洲w码| 国产高清亚洲一区| 日本久久一区二区三区| 欧美一区二区成人6969| 久久久久久久久岛国免费| 一区二区三区免费看视频| 看片网站欧美日韩| 91免费精品国自产拍在线不卡| 欧美日韩成人在线| 国产亚洲成aⅴ人片在线观看| 一区二区三区中文字幕| 久久精品国产99国产| 91国内精品野花午夜精品| 日韩欧美在线不卡| 中文字幕亚洲一区二区va在线| 亚洲 欧美综合在线网络| 国产91精品精华液一区二区三区| 欧美日韩免费观看一区二区三区| 精品毛片乱码1区2区3区| 亚洲精品国久久99热| 国模少妇一区二区三区| 在线观看免费亚洲| 国产精品区一区二区三区| 视频在线在亚洲| 色综合久久中文综合久久牛| 日韩欧美国产一区二区在线播放| 亚洲视频一区二区在线| 精品一区二区日韩| 欧美精品三级在线观看| 中文字幕中文字幕一区二区| 久久99国产乱子伦精品免费| 色94色欧美sute亚洲线路二| 中文子幕无线码一区tr| 喷水一区二区三区| 色久综合一二码| 中文字幕免费观看一区| 日本午夜精品视频在线观看| 欧美中文字幕一区二区三区亚洲| 国产精品全国免费观看高清 | 337p日本欧洲亚洲大胆色噜噜| 亚洲女爱视频在线| 国产精品一级黄| 欧美一区二区在线免费观看| 亚洲天堂福利av| 国产成人午夜视频| 精品久久久久久最新网址| 日韩在线一区二区| 欧美日韩综合在线| 亚洲乱码国产乱码精品精98午夜| 成人午夜视频在线观看| 国产夜色精品一区二区av| 久久99蜜桃精品| 欧美一级艳片视频免费观看| 丝袜亚洲另类丝袜在线| 欧美少妇一区二区| 亚洲成a人片在线不卡一二三区| 色综合视频一区二区三区高清| 亚洲欧美综合色| 成人av在线网| 亚洲激情欧美激情| 欧美日韩一区二区三区高清 | 精品一区二区三区不卡 | 中文字幕日韩一区| 成人99免费视频| 日韩美女啊v在线免费观看| 一本色道久久加勒比精品| 亚洲另类色综合网站| 在线精品视频免费观看| 亚洲一区在线播放| 这里是久久伊人| 久久精品国产77777蜜臀| 久久综合色之久久综合| 成人黄页毛片网站| 中文字幕一区在线观看视频| 91福利国产成人精品照片| 亚洲一区二区四区蜜桃| 91精品免费在线| 久久精品国产99国产精品| 国产亚洲精品久| 99视频在线观看一区三区| 亚洲资源中文字幕| 337p亚洲精品色噜噜噜| 国产一区免费电影| 日韩毛片精品高清免费| 5月丁香婷婷综合| 国产在线精品一区二区| 中文字幕一区二| 欧美乱妇一区二区三区不卡视频| 蜜臀久久久久久久| 国产三级精品在线|