- 博客(6)
- 收藏
- 关注
原创 二分查找——折半查找
1.二分查找的前提 <1>要查找的线性表必须是顺序存储的 <2>线性表中的元素必须是有序排序的 2.二分查找的过程 int BinarySearch(List Tbl, ElementType K) // 定义一个有两个参数函数,Tbl为线性表,K为关键字 { int left,right,mid,NoFound =-1; 定义几个标签,left为左标签,right为右标签,mid为中间值,NoFound为未找到的标记值 left = 1; //letf指向第一个元素 right
2020-10-22 17:01:40
166
原创 C语言的用户自定义数据类型——结构体
模板 定义 初始化 我称之为结构体三要素 在C语言中,有很多基本数据类型,比如char,int,long,float,double.即使C语言定义了很多数据类型,但想要描述现实世界的绝大多数对象时,这些定义的数据类型是远远不够的,所以一种全新的用来定义数据类型的方式被引入——用户自定义数据类型,其中最典型的,也是最被人们所熟知的就是数组了,下面我们就将数组和结构体进行对比: 在定义上: 数组是同一类型数据的集合 结构体可以是同一类型也可以是不同类型的集合 在调用方法上: 数组是用数组名加下标的形式进行调用,
2020-10-22 17:01:10
967
原创 黑客入门——Internet蠕虫(缓冲区溢出攻击)
Internet蠕虫是世界上第一个缓冲区溢出攻击,曾造成全球多台网络服务器瘫痪。 利用缓冲区溢出执行非授权指令,甚至取得系统特权,进而进行各种非法操作。 缓冲区溢出通常是因gets()、scanf()、strcpy()等函数未对数组越界加以监视和限制,导致有用的堆栈数据被覆盖而引起的。 下面我们看一个例子: #include<stdio.h> #include<string.h> #define N 10 int main() { char str[N]; gets(str);
2020-10-22 17:00:21
865
原创 关于数组和指针的一点思考
能力越大,责任越大。在C语言中也是如此,指针作为C语言最强的特性之一,同时也是最危险的特性之一。 容易发生的内存错误如下: (1)内存分配未成功就使用 造成这类错误的原因是没有意识到内存分配会不成功 避免的方法是:在使用内存之前检查一下指向他的指针是否为空指针NULL 例如:指针变量p指向的内存是用动态内存分配函数申请的内存,则可用如下语句判断: if(p == NULL); 或 if(p != NULL); (2)内存分配成功了,但尚未初始化就使用 所以,我们一定要在定义变量的同时进行初始化,千万不要忘记
2020-10-22 16:54:17
179
原创 动态数组——指针和动态内存分配函数联用
我终于决定要写一些关于专业知识的博客了,被自己感动到了。 废话不多说,我们开始吧。Go!Go!Go! 在C语言中,最难的知识点是什么可能会有争议;但如果说,最神奇的是什么,那一定是数组和指针了。 关于数组和指针的应用,第一个想到的就是指针和动态内存分配函数联用,来构建动态数组了。 动态内存分配函数分为4个函数: (1)函数malloc() 用于分配若干字节的内存空间,返回一个指向该内存首地址的指针。 void *malloc(unsigned int size) 函数调用成功将返回一个指向void类型的指针
2020-10-22 16:52:52
370
原创 二叉搜索树的查找和删除
<1>Find BinTree Insert( BinTree BST, ElementType X ) { if( !BST ){ /* 若原树为空,生成并返回一个结点的二叉搜索树 */ BST = (BinTree)malloc(sizeof(struct TNode)); BST->Data = X; BST->Left = BST->Right = NULL; } else { /* 开始找要插入元素的位置 */ if( X <
2020-09-30 21:36:40
164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人