?? 作業(yè)1.cpp
字號:
#include <iostream.h>
typedef struct node
{
int data;
struct node *next;
}ListNode;
typedef ListNode * LinkList;
/*-------------------------------------*/
LinkList CreateList(int Num)
{
int i;
LinkList head = new ListNode();
ListNode *s,*r;
r=head;
for(i=0;i<Num;i++)
{
s=new ListNode();
r->next=s;
r=s;
}
r->next = NULL;
return head;
}
/*-------------------------------------*/
/*-------------------------------------*/
void ShowList(LinkList head)
{
head = head->next;
while(head!=NULL)
{
cout<<" "<<head->data;
head=head->next;
}
}
/*-------------------------------------*/
int main()
{
char cmd;
int Name,flag=0;
LinkList FreeP;
LinkList ReadyP;
LinkList ExeP;
LinkList BlockP;
cout<<"******************************"<<endl;
cout<<" 歡迎使用此系統(tǒng)——進程控制"<<endl;
cout<<"******************************"<<endl;
FreeP=CreateList(10);
ReadyP=CreateList(0);
ExeP=CreateList(0);
BlockP=CreateList(0);
cout<<"請輸入你的command:"<<endl;
cout<<">";
cin>>cmd;
while(1)
{
switch(cmd)
{
case 'c':
case 'C':
cout<<"請輸入一個進程名:"<<endl;
cin>>Name;
if(ExeP->next==NULL)
{
flag=0;
}
if(flag==0)
{
ListNode t;
t.data=Name;
t.next = NULL;
ExeP->next=&t;
flag=1;
cout<<"創(chuàng)建進程"<<Name<<"成功"<<endl;
}
else
{
if(FreeP->next != NULL)
{
LinkList p,q;
p=FreeP->next;
FreeP->next=p->next;
p->data=Name;
q=ReadyP;
while(q->next != NULL)
q=q->next;
q->next=p;
p->next=NULL;
cout<<"創(chuàng)建進程"<<Name<<"成功"<<endl;
}
else
cout<<"錯誤:不能創(chuàng)建進程,已經(jīng)沒有資源!"<<endl;
}
break;
case 'e':
case 'E':
if(ExeP->next!=NULL)
{
LinkList p,q,r;
p=new ListNode();
Name=ExeP->next->data;
p->data=ExeP->next->data;
p->next=NULL;
q=FreeP;
while(q->next != NULL)
q=q->next;
q->next=p;
cout<<"結(jié)束進程"<<Name<<"成功!"<<endl;
if(ReadyP->next!=NULL)
{
r=ReadyP->next;
ReadyP->next=r->next;
ExeP->next->data=r->data;
ExeP->next->next=NULL;
}
else
{
ExeP->next=NULL;
cout<<"沒有就緒進程,不能再執(zhí)行!"<<endl;
}
}
else
{
cout<<"沒有在執(zhí)行的進程!"<<endl;
}
break;
case 'b':
case 'B':
if(ExeP->next!=NULL)
{
LinkList p,q;
q=new ListNode();
Name=ExeP->next->data;
q->data=ExeP->next->data;
q->next=NULL;
p=BlockP;
while(p->next!=NULL)
p=p->next;
p->next=q;
cout<<"阻塞進程"<<Name<<"成功!"<<endl;
if(ReadyP->next!=NULL)
{
p=ReadyP->next;
ReadyP->next=p->next;
ExeP->next->data=p->data;
ExeP->next->next=NULL;
}
else
{
ExeP->next=NULL;
cout<<"沒有就緒進程,不能再執(zhí)行!"<<endl;
}
}
else
{
cout<<"沒有在執(zhí)行的進程,不能進行阻塞!"<<endl;
}
break;
case 'w':
case 'W':
if(BlockP->next!=NULL)
{
LinkList p,q;
p=BlockP->next;
Name=p->data;
BlockP->next=p->next;
if(ExeP->next==NULL)
{
ExeP->next=new ListNode();
ExeP->next->data=p->data;
ExeP->next->next=NULL;
}
else
{
q=ReadyP;
while(q->next!=NULL)
q=q->next;
q->next=p;
p->next=NULL;
}
cout<<"喚醒進程"<<Name<<"成功!"<<endl;
}
else
{
cout<<"沒有阻塞進程,不能進行喚醒!"<<endl;
}
break;
case 't':
case 'T':
if(ExeP->next!=NULL)
{
LinkList p,q,r;
p=new ListNode();
Name=ExeP->next->data;
p->data=ExeP->next->data;
p->next=NULL;
q=ReadyP;
while(q->next!=NULL)
q=q->next;
q->next=p;
cout<<"正在執(zhí)行的進程"<<Name<<"時間片到!"<<endl;
r=ReadyP->next;
ReadyP->next=r->next;
ExeP->next->data=r->data;
ExeP->next->next=NULL;
}
else
{
cout<<"沒有正在執(zhí)行的進程!"<<endl;
}
break;
case 'h':
case 'H':
cout<<"\t幫助: Command list:"<<endl;
cout<<"\tC : 創(chuàng)建進程."<<endl;
cout<<"\tE : 結(jié)束進程."<<endl;
cout<<"\tB : 阻塞進程."<<endl;
cout<<"\tW : 喚醒進程."<<endl;
cout<<"\tT : 時間片到."<<endl;
cout<<"\tS : 展示所有進程名."<<endl;
cout<<"\tH : 幫助."<<endl;
cout<<"\t# ; 退出工程."<<endl;
break;
case '#':
return 0;
case 's':
case 'S':
cout<<"就緒進程:";
ShowList(ReadyP);
cout<<endl<<"執(zhí)行進程:";
ShowList(ExeP);
cout<<endl<<"阻塞進程:";
ShowList(BlockP);
cout<<endl;
break;
default: cout<<"代碼錯誤!"<<endl;break;
}
cout<<">";
cin>>cmd;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -