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