taskList
来源:互联网 发布:nvidia控制面板优化 编辑:程序博客网 时间:2024/05/17 04:42
#include <iostream>
using namespace std;
#define RETURN_ERROR 0
#define RETURN_OK 1
typedef struct tasknode
{
unsigned int NO;
unsigned int weight;
unsigned int preNode[11];
unsigned int nxtNode[11];
}TaskNode;
TaskNode g_taskNet[101];
unsigned int g_forWard[101];
unsigned int g_bakWard[101];
void initialNet()
{
int i;
for (i = 0; i <= 100; i++)
{
g_forWard[i] = 0;
g_bakWard[i] = 0;
}
for (i = 0; i <= 10; i++)
{
g_taskNet->preNode[i] = 0;
g_taskNet->nxtNode[i] = 0;
}
return;
}
void initialTaskNode(TaskNode* taskNode,
unsigned int NO,
unsigned int weight,
unsigned int preNo,
unsigned int nxtNo)
{
unsigned int NxtFlag;
unsigned int PreFlag;
taskNode->NO = NO;
taskNode->weight = weight;
taskNode->preNode[0]++;
taskNode->nxtNode[0]++;
PreFlag = taskNode->preNode[0];
NxtFlag = taskNode->nxtNode[0];
taskNode->preNode[PreFlag] = preNo;
taskNode->nxtNode[NxtFlag] = nxtNo;
}
void findNodeIterater(unsigned int NO)
{
int i;
unsigned int weightSum = 0;
for (int i = 0; i < g_taskNet[NO].nxtNode[0]; i++)
{
weightSum += g_taskNet[NO].nxtNode[i];
}
g_taskNet[NO].weight = weightSum;
if (0 == g_taskNet[NO].preNode[0])
{
return;
}
else
{
for (int i = 0; i < g_taskNet[NO].preNode[0]; i++)
{
findNodeIterater(g_taskNet[NO].preNode[i]);
}
}
}
int insertNodeandUpdateNet(unsigned int NO,
unsigned int weight,
unsigned int preNo,
unsigned int nxtNo)
{
unsigned int PretoNxtFlag;
unsigned int NxttoPreFlag;
if(0 != g_taskNet[NO].NO)
{
return RETURN_ERROR;
}
initialTaskNode(&g_taskNet[NO], NO, weight, preNo, nxtNo);
PretoNxtFlag = g_taskNet[preNo].nxtNode[0];
NxttoPreFlag = g_taskNet[preNo].preNode[0];
g_taskNet[preNo].nxtNode[PretoNxtFlag] = NO;
g_taskNet[nxtNo].preNode[NxttoPreFlag] = NO;
//update
findNodeIterater(NO);
}
int deleteNodeandUpdateNet(unsigned int NO)
{
int pre, nxt, preFlag;
unsigned int preNo;
unsigned int nxtNo;
unsigned int preNodeNum;
unsigned int nxtNodeNum;
unsigned int tmpArray[11];
preNodeNum = g_taskNet[NO].preNode[0];
nxtNodeNum = g_taskNet[NO].nxtNode[0];
for (pre = 1; pre <= preNodeNum; pre++)
{
preNo = g_taskNet[NO].preNode[0];
preFlag = g_taskNet[preNo].nxtNode[0];
for (nxt = 1; nxt <= nxtNodeNum; nxt++)
{
nxtNo = g_taskNet[NO].nxtNode[nxt];
g_taskNet[preNo].nxtNode[++preFlag] = nxtNo;
g_taskNet[preNo].nxtNode[0]++;
}
tmpArray[pre] = preNo;
}
//update
for (pre = 1; pre <= preNodeNum; pre++)
{
findNodeIterater(g_taskNet[NO].preNode[pre]);
}
}
- TASKLIST
- tasklist
- taskList
- TASKLIST
- tasklist
- Tasklist命令
- TASKLIST命令
- tasklist详解
- tasklist、taskkill
- TASKLIST命令
- My TaskList
- 功能强大的TASKLIST命令
- VC简单的Tasklist
- Tasklist and taskkill
- cmd tasklist进程命令
- TASKLIST——火眼金睛
- TASKLIST命令操作
- TASKLIST用法说明
- ZOJ-1279
- 20140804
- Docker: unable to remount sys readonly: unable to mount sys as readonly max retries reached
- VFL--autolayout
- 生活之机遇与挑战
- taskList
- hive 介绍
- hdu 2015 偶数求和
- OC语言02
- 人工智能模拟休息
- 区间第k大(poj 2104)
- 辛追与韩信的故事
- git上传文件常识
- hdu 2016 数据的交换输出