#include <stdioh>
#include <stdlibh>
int iGlobal;
typedef struct tagNode
{
int iData;
int iCount;
struct tagNode pLeft;
struct tagNode pRight;
}Node;
Node Add(Node a, Node pNow, int iVal)
{
if (iGlobal == 0)
{
a[0]pLeft = a[0]pRight = NULL;
a[0]iCount = 1;
a[0]iData = iVal;
++iGlobal;
}
else
{
if (pNow == NULL)
{
pNow = a + (iGlobal++);
pNow->pLeft = pNow->pRight = NULL;
pNow->iCount = 1;
pNow->iData = iVal;
}
else
{
if (iVal < pNow->iData)
{
pNow->pLeft = Add(a, pNow->pLeft, iVal);
}
else if (iVal == pNow->iData)
{
++pNow->iCount;
}
else
{
pNow->pRight = Add(a, pNow->pRight, iVal);
}
}
}
return pNow;
}
Node Find(Node a, int iVal)
{
if (a == NULL)
{
return NULL;
}
else
{
if (iVal < a->iData)
{
return Find(a->pLeft, iVal);
}
else if (iVal == a->iData)
{
return a;
}
else
{
return Find(a->pRight, iVal);
}
}
}
int main(void)
{
int m, n, i, q, temp;
Node a = NULL;
Node p = NULL;
FILE fp;
if ((fp = fopen("datatxt", "r")) == NULL)
{
printf("File not found!\n");
return -1;
}
fscanf(fp, "%d %d", &m, &n);
do
{
iGlobal = 0;
if ((a = (Node )malloc(m n sizeof(Node))) == NULL)
{
return -1;
}
for (i=0; i<mn; ++i)
{
fscanf(fp, "%d", &temp);
Add(a, a, temp);
}
fscanf(fp, "%d", &q);
for (i=0; i<q; ++i)
{
fscanf(fp, "%d", &temp);
p = Find(a, temp);
if (p == NULL)
{
putchar('0');
}
else
{
printf("%d", p->iCount);
}
if (i != q-1)
{
putchar(' ');
}
else
{
putchar('\n');
}
}
if (a != NULL)
{
free(a);
a = NULL;
}
fscanf(fp, "%d %d", &m, &n);
}while (m != 0 && n != 0);
return 0;
}
根据我的理解文件中的数据应该是这样的:
3 4
1 1 1 4
2 2 2 4
3 3 3 4
4
1
2
3
4
0 0
每一个整数或负数表示每种病毒变种,这个解答的思路是建立二叉排序树,存放数据的文件名为datatxt,你可以自己在源代码中修改。如果理解错了,那就给出测试用例,我再修改
计算机病毒的两种检测方法:
1、手工检测
手工检测是指通过一些软件工具(DEBUGCOM、PCTOOLSEXE、NUCOM、SYSINFOEXE等提供的功能) 进行病毒的检测。
这种方法比较复杂,需要检测者熟悉机器指令和 *** 作系统,因而无法普及。这种方法检测病毒,费时费力,但可以剖析新病毒,检测识别未知病毒,可以检测一些自动检测工具不认识的新病毒。
2、自动检测
自动检测是指通过一些诊断软件来判读一个系统或一个软盘是否有毒的方法。自动检测则比较简单,一般用户都可以进行,但需要较好的诊断软件。
扩展资料:
防止计算机中病毒:
经常更新 *** 作系统补丁和应用软件的版本。 *** 作系统厂商会定期推出升级补丁,这些升级补丁除了提升 *** 作系统性能外,很重要的任务是堵塞可能被恶意利用的 *** 作系统漏洞。
同理,把软件升级到最新版本,也会让很多病毒望而却步,因为新版本软件会优化内部代码,使病毒暂无可乘之机。
安装防火墙和杀毒软件。防火墙与杀毒软件就像大门的警卫,会仔细甄别出入系统的文件程序,发现异常及时警告并处置。
比如在访问恶意网站或运行可疑程序时,杀毒软件都会进行警告;当下载或收到可疑文件时,杀毒软件也会先行扫描;当 *** 作系统需要更新或应用程序需要升级时,杀毒软件也会提示。
参考资料来源:百度百科-计算机病毒
参考资料来源:国家保密局-计算机感染病毒防范和处置措施
计算机病毒检测方法:
1.手工检测
手工检测是指通过一些软件工具(DEBUGCOM、PCTOOLSEXE、NUCOM、SYSINFOEXE等提供的功能) 进行病毒的检测。这种方法比较复杂,需要检测者熟悉机器指令和 *** 作系统,因而无法普及。它的基本过程是利用一些工具软件,对易遭病毒攻击和修改的内存及磁盘的有关部分进行检查,通过和正常情况下的状态进行对比分析,来判断是否被病毒感染。这种方法检测病毒,费时费力,但可以剖析新病毒,检测识别未知病毒,可以检测一些自动检测工具不认识的新病毒。
2.自动检测
自动检测是指通过一些诊断软件来判读一个系统或一个软盘是否有毒的方法。自动检测则比较简单,一般用户都可以进行,但需要较好的诊断软件。这种方法可方便地检测大量的病毒,但是,自动检测工具只能识别已知病毒,而且自动检测工具的发展总是滞后于病毒的发展,所以检测工具总是对相对数量的未知病毒不能识别。
就两种方法相比较而言,手工检测方法 *** 作难度大,技术复杂,它需要 *** 作人员有一定的软件分析经验以及对 *** 作系统有一个深入的了解。而自动检测方法 *** 作简单、使用方便,适合于一般的计算机用户学习使用;但是,由于计算机病毒的种类较多,程序复杂,再加上不断地出现病毒的变种,所以自动检测方法不可能检测所有未知的病毒。在出现一种新型的病毒时,如果现有的各种检测工具无法检测这种病毒,则只能用手工方法进行病毒的检测。其实,自动检测也是在手工检测成功的基础上把手工检测方法程序化后所得的。
因此,手工检测病毒是最基本、最有力的工具。
病毒感染正常文件或系统会引起各种变化,从这些变化中找出某些本质性的变化,作为诊断病毒的判据。广泛使用的主要检测病毒方法有:比较法、搜索法、分析法、感染实验法、软件模拟法、行为检测法。
以上就是关于求问!!!数据结构课程设计题:病毒测试程序。(c语言)全部的内容,包括:求问!!!数据结构课程设计题:病毒测试程序。(c语言)、计算机病毒的检测方法有哪两种、计算机病毒是检测方法主要有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)