摘要: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 #include <string.h> 5 #include <assert.h> 6 7 typedef struct { 8 char info; 9 unsigned int weight; 10 unsigned int parent, lchild, rchild; 11 }HTNode, *HuffmanTree; 12 13 typedef char **HuffmanCode; 14 1 阅读全文
posted @ 2012-01-01 20:51 leealways87 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 二叉树的非递归遍历需要用到栈,所以就自己写栈,这也是一个比较纠结的地方。C语言里面只有值传递。声明指针时知给指针分配了空间,所以对于指针指向的对象,需要我们自己malloc。我在用户函数里声明了Stack*变量,在初始化时,当然需要分配Stack的空间,切记!!!又因为值传递的影响,所以选择传递一个二维指针,就因为之前没有分配一个Stack空间,而直接操作里面的base指针,显然要错误! 1 #include "stack.h" 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<malloc 阅读全文
posted @ 2011-12-31 21:23 leealways87 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1、密码校验 1 #!/bin.sh 2 3 echo "please input your passwd" 4 stty -echo #设置输入字符不回显 5 for i in 1 2 3 6 do 7 read passwd 8 if [ "123" = $passwd ] #注意空格 9 then10 echo "success"11 break;12 else13 echo "please input again!"14 fi15 done16 stty echo #设置输入字符回显整数比较-eq等于,如: 阅读全文
posted @ 2011-12-30 20:28 leealways87 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define FALSE 0 4 #define TRUE 1 5 char chos; 6 int input; 7 8 struct node{ 9 int data; 10 int bf; 11 struct node *lchild; 12 struct node *rchild; 13 }; 14 15 typedef struct node *BST; 16 BST R = NULL; 17 18 void chose() 19 { ... 阅读全文
posted @ 2011-12-30 00:59 leealways87 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html一、信号生命周期从信号发送到信号处理函数的执行完毕对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。下面阐述四个事件的实际意义:信号"诞生"。信号的诞生指的是触发信号的事件发生(如检测到硬件异常、定时器超时以及调用信号发送函数kill 阅读全文
posted @ 2011-12-29 23:16 leealways87 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。信号来源信号事件的发生有两个来源:硬件来源 阅读全文
posted @ 2011-12-29 23:13 leealways87 阅读(319) 评论(0) 推荐(0) 编辑
摘要: http://www.isi.edu/nsnam/ns/tutorial/跟着这个添加自己的ping协议,环境是Ubuntu10.04, NS2.34,其实这个版本的NS已经实现的ping协议,并且与前面网站版本不同,在改代码的时候会有所不同。首先添加自己的ping.h头文件: 1 #ifndef ns_ping_h 2 #define ns_ping_h 3 4 #include "agent.h" 5 #include "tclcl.h" 6 #include "packet.h" 7 #include "address 阅读全文
posted @ 2011-12-28 17:49 leealways87 阅读(1273) 评论(2) 推荐(0) 编辑
摘要: 吞吐量(throughput):单位时间内,所有目的节点的平均接受数据速率。Throughput = (某段时间内所有目的节点的数据接受量) / 时间。实验链路采用FIFO队列管理机制,三个源节点,三个目的节点,之间有三条FTP数据流,有两个路由器。 1 set ns [new Simulator] 2 3 #打开trace文件 4 set nd [open out.tr w] 5 $ns trace-all $nd 6 7 #设定TCP流的大小 8 set nflow 5 9 10 #设置路由器(在ns2中,路由器就是节点)11 set r1 [$ns node]12 set r2 [$.. 阅读全文
posted @ 2011-12-27 16:41 leealways87 阅读(2234) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://hi.baidu.com/jerry_916/blog/item/456bfbdc2aca47d48d1029be.html两种传统的包的调度策略在介绍Drop Tail之前,我们先介绍两种传统的包的调度策略-决定包的传送顺序。(1)FIFO (First In First Out,先进先出)是一种经典的包调度策略,它的最大优点在于实施起来简单。FIFO又叫“先到先服务”(FCFS),即第一个到达路由器的数据包首先被传输。FIFO的问题在于在排队的时候没有考虑包的重要程度,对FIFO排队的一个简单改进是优先级排队。基本思想是给每个数据包分配一个优先级标志。这个优先级标志 阅读全文
posted @ 2011-12-27 12:03 leealways87 阅读(2006) 评论(0) 推荐(0) 编辑
摘要: wait和waitpid函数原型:1 #include <sys/wait.h>2 3 pid_t wait(int *status);4 pid_t waitpid(pid_t pid, int *status, int options);当进程正常或者异常终止时,内核就像其父进程发送SIGHLD信号,因为子进程终止是个异步信号,所以这种信号也是内核向父进程发的异步通知。对于这种信号,系统默认动作是忽略它,此时进程状态一直保存在内存中,直到父进程使用wait函数收集状态信息,才清空。用wait来等待一个子进程终止运行叫回收进程,如果一个子进程终止后,父进程没有调用wait函数收集 阅读全文
posted @ 2011-12-19 15:10 leealways87 阅读(591) 评论(0) 推荐(1) 编辑