03 2014 档案
摘要:这个算法来求关键路径,其实就是利用拓扑排序,首先求出,每个节点最晚开始时间,再倒退求每个最早开始的时间。从而算出活动最早开始的时间和最晚开始的时间,如果这两个时间相等,则为关键路径。时间复杂度为O(n+e)主要算法:int topSort(Graph *g){ EdgeNode *e; int i,k,gettop; int top = 0 ; int count = 0; int *stack; stack = (int *)malloc(g->numVertexes * sizeof(int)); for(i=0;inumVertexes;i++)...
阅读全文
摘要:创建一个文件使用fopen打开,然后使用fprintf输出,最后关闭文件流FILE *out;out = fopen("test.txt","a+");if(out == NULL){ exit(EXIT_FAILURE);}printf("hello~\n");int i;for(i=0;i<10;i++){ fprintf(out,"heelo %d\n",i);}fclose(out);
阅读全文
摘要:有点类似模板的功能,可以使用函数指针作为参数,当调用函数时,使用void *进行传递参数,细致比较时,再用int *之类的进行强制转换。回调函数,其实就是在参数中定义函数,调用时,回到主函数去调用这个函数。仔细用法如下:首先定义查找函数Node * search_list(Node *node, void const *value, int (*compare)(void const *,void const *)){ while(node!=NULL){ if(compare(&node->data,value) == 0 ) break; ...
阅读全文
摘要:这个算法,主要是为输出一个无环图的拓扑序列算法思想:主要依赖一个栈,用来存放没有入度的节点,每次读取栈顶元素,并将栈顶元素的后继节点入度减一,如果再次出现入度为零的节点,就加入到栈中。参考《大话数据结构》,写下下面完整代码,并发现,其中程序的进行,出现错误。v6执行完,应该执行v9,因为此时v9是站顶元素,并不是v0.算法流程:int topGraph(graph g){ EdgeNode *e; int i,k,gettop; int top = 0 ; int count = 0; int *stack; stack = (int *)malloc(g-...
阅读全文
摘要:另一个求解最短路径的经典算法是Floyd,时间复杂度为O(n^3),所以如果只求一个点到另一个点的最短路径,应该用Dijkstra算法,时间复杂度为O(n^2)。如果要求全部的最短路径,还是推荐Floyd,因为代码更简单,更整洁:核心代码主要就是通过简单的思路,如果借由中间节点的路径要小于直达的费用,那么就替换中间节点为路径中间量if(D[i][j] > D[i][k]+D[k][j]) D[i][j] = D[i][k] + D[k][j];全部代码 1 #include 2 #include 3 #define MAXSIZE 9 4 #define INF 65535 5 in..
阅读全文
摘要:迪杰斯特拉算法是典型的求解最短路径的方法。优点,时间复杂度为O(n2),主要思想就是遍历邻居,找到路径最短的邻居,添加到路径信息里面。再更新这个添加点,是否能减少到其他点的路径长度。但是有一个缺点,就是这个算法只满足一个节点的扫描信息,如果想计算所有的节点到达其他节点的最短路径,就需要每次调用一次该算法。时间复杂度变为O(n3).总体来说,分为两部分第一部分:查找当前节点周围的最近的邻居;min = INF; for(j=0; j 2 #include 3 #define MAXSIZE 9 4 #define INF 65535 5 int num[MAXSIZE][M...
阅读全文
摘要:判断一个文件是否是符号链接文件,并移入指定的文件夹1 #!/bin/bash2 #filename:type3 FILENAME=4 echo "Input file name:"5 read FILENAME6 if [ -L FILENAME /home/xingoo/workspace/shell/tmp9 fi修改文件所有权chmod u+x filetype.sh创建符号链接ln - s filetype.sh link运行结果
阅读全文
摘要:同样是求最小生成树,kruskal适合从边的角度出发,因此适合稀疏图。而prim算法从点的角度出发,适合稠密图。时间复杂度为O(eloge)。因为外层循环了e(边数)层,而内部find循环了loge层。算法首先把二维矩阵图转化为边图 for(i=0;ie[k].begin == j && g->e[k].end == i){ flag = 0; break; } } ...
阅读全文
摘要:书中本意是想省略后端顺序表中无用的查找,但是忽略了一个问题。原书中代码大意为:void bubblesort(Graph *g,int len){ int i,j; int flag = 1; for(i=0; i i; j--){ if(g->e[j].length e[i].length){ swap(g,i,j); printf("%d %d \n",i,j); flag = 1; } } } ...
阅读全文
摘要:这主要是由于旧版本的falsh player的原因,卸载干净并清理注册表,再次安装flash player即可。具体方法:1 在控制面板 卸载程序里面 卸载flash player2C:\WINDOWS\system32\Macromed\Flash 文件夹删除3 在注册表regredit中,删除HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia4 下载官方flash player 即可
阅读全文