⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 操作系统的课程设计
💻 H
字号:
// List.h: interface for the List class.
//
//////////////////////////////////////////////////////////////////////


#if !defined(AFX_LIST_H__6D78FEEC_384C_415E_97A1_83FD6734BF4C__INCLUDED_)
#define AFX_LIST_H__6D78FEEC_384C_415E_97A1_83FD6734BF4C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ConstVar.h"
#include <iostream>
using namespace std;
class Os;
typedef struct PCB
{
	int id;//进程标识符;
	char *name;//进程名字;
	PCBstatus status;//进程当前状态;
	struct PCB *next;//指向同状态的下一个PCB
	int priority;//进程优先级;
	int IOdevice;//外设清单
	int IOreq;//进程还需要的外部设备;
	int blockfor;//阻塞原因;
	int timereq;//进程要求的执行时间
	int time_cpu;//已经执行的时间;
	void (*fuction)(Os *);//模拟进程要执行的代码的地址
}PCB;
class List  
{
private:
	int NodeNum;
	char *status;//链表的状态
	PCB *ListHead;//指向链表的第一个进程
	PCB *ListTail;//指向链表的最后一个进程
public:	
	Status AppendPCB(PCB *datap);//将指定PCB加入链表
	PCB *DeletePCB(int pid);//删除指定的PCB结点
	void DisplayList();//显示整个链表
	void DisplayPCB(PCB *pcb);//显示PCB中的详细信息
	PCB* FindPCB(int pid,PCB* &pre);//查找指定的结点
	PCB* FindPCB(int pnum);//查找链表中的第pnum个结点
	char* GetListStatus();//取得当前链表PCB结点的状态
	int GetNodeNum();//取得链表的结点数
	void SetNodeNum(int k);//设置链表结点数
	Status isEmpty();//判断链表是否为空
	Status GetFirstPCB(PCB* &pcb);//取第一个结点
	void SetStatus(char *s);//设置状态标识	
	void SetListHead(PCB*pcb);//设置头指针
	void SetListTail(PCB*pcb);//设置尾指针
	List(char* nodetype="就绪");//构造函数,初始化
	virtual ~List();
};

#endif // !defined(AFX_LIST_H__6D78FEEC_384C_415E_97A1_83FD6734BF4C__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -