针对刷题过程中出现的算法题,汇总一些共性的解题思路和技巧
Unity2D项目: Ruby's Adventure笔记,记录项目开发中涉及的知识点,包括瓦片地图涉及、人物移动逻辑、动画控制、特效控制等
C语言版实现"数据结构(严版)"中的部分数据结构及算法,仅供参考 包括:顺序表、链表、栈、队列、串、二叉树
排序算法1、排序概念1.分类按存储介质:内部排序:数据量不大、数据在内存无需内存外数据交换外部排序:数据量较大,数据在硬盘(文件排序)按比较器个数:串行排序:单处理器(同一时刻比较一个元素)并行排序:多处理器(同一时刻比较多个元素)按主要操作:比较排序:主要操作为比较(如插入排序、交换排序、选择排序等)基数排序:不比较元素的大小,仅根据元素本身取值确定位置按辅助空间:原地排序:空间复杂度O(1)非
查找算法1、查找的基本概念查找表:由同一类型的数据元素构成的集合关键字:用来标识一个数据元素的某个数据项的值主关键字:可唯一标识一个记录的关键字次关键字:用以标识若干记录的关键字查找结果:若查找成功,一般给出整个记录的信息,或给出该记录在查找表中的位置;若查找失败,一般给出“空记录”或“空指针”静态查找表:仅作“查询”操作,不增删查找表的元素动态查找表:作增删查找表的操作平均查找长度(ASL):关
图1、图的定义与基本术语1.图的定义图:图由两个集合V和E组成,记为G=(V,E),其中V表示顶点的有穷非空集合;E表示边的有穷集合2.术语无向图:每条边都是无方向的图有向图:每条边都是有方向的图完全图:任意两个顶点都有一条边相连(对于n个顶点的无向完全图,共有n(n1)/2条边;对于n个顶点的有向完全图,共有n(n1)条边)稀疏图:有很少边或弧的图(e<nlogn)稠密图:有较多边或弧的图网:边
哈夫曼树1、定义和基本概念哈夫曼树:最优二叉树,带权路径长度最短的树基本概念:路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径路径长度:路径上的分支数目树的路径长度:根结点到每一个结点的路径长度之和权:树中结点赋予一个含有某种意义的数值带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘积树的带权路径长度(WPL):树中所有叶子结点的带权路径长度之和故哈夫曼树是WPL最短
树和二叉树的学习笔记(除哈夫曼树)
串、数组和广义表栈和队列是存储方式受限的线性表串、数组和广义表是存储数据类型受限的线性表1、串1.相关概念串:由零个或多个任意字符组成的有限序列串名:字符串变量名串值:字符串数据内容串长:串中字符的个数空串:串长为0子串:串中任意个连续的字符组成的子序列,如"abcde"的子串为"ab"、"bc"、"abcd"等真子串:不包含自身的子串主串:包含子串的串字符位置:字符在字符串的位置(注:第一个位置
数据结构(C语言版)学习笔记 包含完整实现代码(C语言实现)
数据结构_day08_09071、线性表1.链表间的比较首元结点尾结点查找结点p的前驱单链表LnextLnext依次遍历无法找到前驱循环链表(头)LnextLnext依次遍历pnext依次遍历循环链表(尾)RnextRpnext依次遍历双向循环链表(头)LnextLnextpriorpprior2.顺序表和链表的比较1.空间性能的比较链表可实现动态存储数据,避免空间的浪费链表在存储数据时由于需要存
数据结构_day07_09061、线性表1.循环链表循环链表:头尾相连的链表,即尾结点的指针域指向头结点循环终止条件:指针p的指针域不指向头结点注:由于操作链表时会经常操作首尾结点,而查询尾结点需要进行遍历,较不方便,故可用尾指针表示单循环链表首元结点:Rnextnext尾结点:R例:带尾指针循环链表的合并1.Ta的尾结点指针域指向Tb的首元结点2.释放Tb的头结点3.Tb的尾结点指针域指向Ta的
数据结构_day06_09041、线性表1.链表1.基本概念存储结构:结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻结点:数据元素的存储映像,包含存储数据元素信息的数据域和存储后继存储位置的指针域头指针:指向第一个结点的指针首元结点:存储第一个元素a1的结点头结点:在链表的首元结点之前附设的一个结点头结点的好处:1.便于首元结点的处理:第一个元素的与其他元素操作一致,无需特
数据结构_day05_09031、线性表1.顺序表1.定义顺序表顺序表包含两部分成员:元素和长度cdefineMAX_SIZE100typedefstructElement{intnum;charstring20;}Element;typedefstructSqList{Elementelem;intlength;}SqList;2.基本操作的实现注:预定义函数返回结果c//函数结果状态defin
数据结构_day04_09021、线性表1.定义与特点线性表:具有相同特性的数据元素的一个有限序列a1,a2,...,a(i1),a(i),a(i+1),...,a(n)其中:a1称为起始结点a(i1)为a(i)的直接前趋a(i+1)为a(i)的直接后继a(n)为终端结点下标:元素的序号,用于表示元素在表中的位置表长:元素总个数(当n=0时称为空表)线性表(或线性结构)的逻辑特征:在非空线性表中,
数据结构_day02_08301、绪论1.基本概念和术语数据类型一个值的集合和定义在这个值集上的一组操作的集合高级语言中,显式或隐式规定在程序执行期间变量和表达的所有可能的取值范围抽象数组类型(ADT)抽象:抽取出实际问题的本质形式定义:(D,S,P)三元组D是数据对象S是D的关系集P是对D的基本操作集定义格式:ADT抽象数据类型名{数据对象:<数据对象的定义数据类型:<数据关系的定义基本操作:<
c语言_Day42_08_151、预处理1、宏定义1.带有副作用的宏参数cdefineMAX(X,Y)((X)(Y)?(X):(Y))intmain(){inta=10,b=11;printf("%d\n",MAX(a,b));//12printf("%d\n",a);//11printf("%d\n",b);//13return0;}宏参数的本质是替换,故宏定义可替换为ab?a:b2.宏和函数函
c语言_Day41_08_141、程序环境程序存在两种不同的环境:翻译环境、执行环境1、程序的编译源文件(.c文件)需要经过编译和链接步骤才可生成可执行文件(.exe)文本文件===二进制文件1.翻译环境1.一个程序中的每个源文件都会经过编译器单独处理生成各个目标文件2.链接库和各个目标文件经过链接器处理生成可执行文件cintAdd(inta,intb){returna+b;}cexternint
c语言_Day40_08_131、文件操作1.文件的随机读取fseek:根据文件指针的位置和偏移量来定位文件指针参数:FILEStream文件指针longOffset偏移量(向左为负,向右为正)intOrign当前指针位置origin值含义SEEK_CUR文件指针的当前位置SEEK_END文件结尾SEEK_SET文件开头cintmain(){FILEpf=fopen("./test.txt","r
c语言_Day39_08_121、文件操作1.文件打开和关闭打开文件使用fopen函数打开文件参数:constcharFileName文件名(若不存在则创建)constcharMode打开方式返回值:File文件指针(指针与文件建立关系)打开方式如下:文件使用方式含义如果指定文件不存在r(只读)为了输入数据,打开一个已经存在的文本文件errorw(只写)为了输入数据,打开一个文本文件建立一个新的文
c语言_Day38_08_111、动态内存分配1、柔性数组C99中,结构体中的最后一个元素允许是未知大小的数组,称为柔性数组cintmain(){structS{intn;intarr;//未知大小};structSs;return0;}柔性数组的使用:通过malloc函数确定柔性数组的大小cstructSps=(structS)malloc(sizeof(structS)+5sizeof(int
c语言_Day37_08_091、动态内存分配内存空间分布:栈:局部变量、函数形参堆:动态内存分配静态区:静态变量、全局变量内存使用方式:创建变量创建数组1、动态内存函数1.malloc和freemalloc函数:用于开辟内存空间参数:size_tsize开辟内存的字节数返回值:void开辟内存空间的起始地址(成功)空指针(失败)cintmain(){intnum=10;//向内存申请一块存放1
本文根据需求、分析、实现的思路记录了简易通讯录的实现过程,并最终提供完整的源代码
c语言_Day36_08_071、自定义类型1.结构体偏移量:相对于起始位置地址的距偏移距离offsetof:用于计算结构体成员的偏移量结构体传参:直接操作cstructS{charc;inti;doubled;};intmain(){structSs;s.c='a';s.i=1;s.d=3.14;printf("%c%d%lf\n",s.c,s.i,s.d);return0;}函数初始化cstr
c语言_Day35_08_061、内存函数1.memmovememcpy无法处理重叠拷贝,而memmove用于处理重叠拷贝cintmain(){intarr10={1,2,3,4};memmove(arr+2,arr,30);return0;}实现:cvoidmy_memmove(voiddes,voidsrc,intsize){assert(des&&src);//从后向前拷贝if(dessrc
c语言_Day34_08_051、字符串函数1.strstr查找子串:若存在子串则返回指向该字符串首元素的指针,反之返回NULL(返回子串第一次出现的位置)原理:外层循环移动目标字符串的指针,内层循环在两字符串匹配后开始移动,当子串移动至'\0'时匹配结束,返回首元素地址,反之返回NULL注:匹配不止为一次,应考虑到多次匹配,如strstr("abbbcde","bbc")ccharmy_strs
c语言_Day33_08_041、字符函数和字符串函数字符串通常存放于常量字符串和字符数组中。1、strlen原理:遍历字符串,统计字符个数,直到找到'\0'结束,返回统计个数实现strlen:共有三种方法计数器法cintmy_strlen(charstr){assert(str!=NULL);intcount=0;while(str){count;str;}returncount;}递归法cin
c语言解决杨氏矩阵和翻转字符串问题。提供不同的解题思路。
c语言_Day31_08_011、指针笔试题1.cintmain(){inta5={1,2,3,4,5};intptr=(int)(&a+1);printf("%d%d\n",(a+1),(ptr1));//25return0;}a表示数组首元素的地址(步长为4),&a表示数组指针(步长为20)2.cstructTest{intnum;charpcName;shortsDate;charcha2;
c语言_Day30_07_311、指针和数组笔试题1、大小问题1.一维整形数组cintmain(){inta={1,2,3,4};printf("%d\n",sizeof(a));//16printf("%d\n",sizeof(a+0));//4printf("%d\n",sizeof(a));//4printf("%d\n",sizeof(a+1));//4printf("%d\n",size
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号