迷宫问题是搜索(Search)的经典问题,寻路是迷宫问题的核心。在某些问题中还会增加体力值的限制。本文主要使用深度优先搜索(DFS)进行迷宫问题的求解。深度优先搜索深度优先搜索的思想是从一个关键点开始,沿着一条路径一直走到尽头,如果在该路径不能发现目标解,则回溯到关键位置,进行下一条路径的搜索。迷宫问题 I问题描述定义一个只包含0和1的二维数组N*M,它表示一个迷宫,其中的1表示墙壁,0表
顺序表(SeqList)是在计算机内存中以数组形式保存的线性数据结构,同时具有连续的物理存储空间。元素在顺序表中的位置称为索引(index)。顺序表大致分为静态顺序表和动态顺序表,前者的容量一经定义就无法改变,后者可随时进行容量调整。动态顺序表在数组的基础上具有容量检测和调整等其他功能接口,使数组的使用更加丰富和方便。逻辑结构顺序表的逻辑结构为线性结构,各个元素在逻辑结构上相邻。物理结构顺序表的物
前言本文对C语言指针和指针使用时的问题做一个概览性的总结,并对一些值得探讨的问题进行讨论。阅读本文,读者能达到统览C语言指针的目的。以下的讨论只针对32/64位机器。指针纲领:什么是指针要知道什么是指针,就要先了解内存的编址方法。内存的编址存储器由一块块的空间(存储单元)组成,为了方便寻找到每一块空间,我们需要对每一个空间进行标识——内存编址。字节(Byte)是讨论内存空间时的基本单位,每个存储单
前言之前写过一篇关于C语言内存管理的文章,对在C语言中使用内存中需要注意的一些问题和解决办法做了一些总结。实际上,内存终归是要存储数据的,这次对C语言中的数据存储做一些讨论。本文结构:C语言数据类型C语言数据类型可以分为两大类:内置数据类型和构造数据类型内置类型包含整形家族、浮点型、指针类型和空类型;构造数据类型可以由基本数据类型进行组合以实现数据类型的自定义,包含数组、结构体、枚举和联合
前言C语言中的真/假和0/1在不同的情境下具有不同的意义,清楚地对他们进行区别有助于正确理解程序,并巧妙地解决一些问题。在逻辑表达式中在逻辑表达式中,0 表示假,非0 表示真int main(){ if (-1) { //执行 printf("hehe\n"); } if (0) { //不执行 printf("haha
前言通讯录的实现综合了C语言的不少基本语法、编程思想和好的编程习惯,深入理解此项目的实现有助于提高语言的实际应用能力。这个通讯录可以保存联系人的姓名、年龄、性别、电话和地址基本信息,实现基本的增、删、查、改和排序功能,并最终将联系人信息存储到文件中。测试模块这部分主要进行各个接口的组合和与用户的交互。static void menu(){ printf("**------- CONTACT -
计算机操作系统属于计算机基础,了解C语言从源文件到可执行文件的被处理过程,有助于认识操作系统,帮助我们理解C语言的某些程序现象。第一部分程序的翻译环境和执行环境翻译环境源文件被处理成可执行文件(源代码到机器指令)所依赖的环境。翻译环境又分为编译和链接。执行环境可执行文件执行所依赖的环境翻译过程翻译是.c文件到.exe文件的过程。翻译包括编译和链接两个步骤。在编译阶段,每个源文件都会被编译器单独处理
将数据放在文件中是一种相对安全的存储方式。在学习C语言时,我们可以通过使用文件操作来对文件进行读写和更改。什么是文件磁盘盘上的文件是文件。在程序设计中,一般讨论两种文件:程序文件和数据文件(从功能角度)。文件名的结构为:文件路径+文件名主干+文件后缀。例如:c:\code\test.txt程序文件:包括程序文件(.c)、目标文件(.o)和可执行程序(.exe)数据文件:数据文件的内容不一定
在学习和使用C语言的过程中经常要编写管理内存的程序,往往提心吊胆。若是不想踩雷,唯一的办法就是深入理解内存管理,发现所有的陷阱并排除他们。内存的使用方式内存主要有三种分配方式:(1)在栈(Stack)上创建。可以在栈区创建数个局部变量或者局部数组。函数结束执行时这些内存被自动释放。(2)从静态区(Static)分配。在静态区创建全局变量,static修饰的变量和常量字符串都在静态区存储。这些内存在
·前言在C语言中有诸如整型家族、浮点型、字符型等多种数据类型。丰富的数据类型使C语言的表达性更强,但对于现实生活中一些复杂的对象只有这些基本类型还不足以描述到位。比如要准确描述一棵树,不仅要包含高度、直径,还应包括品种、产地等。这就需要一些自定义类型来按照自己的意愿描述一些基本数据类型无法表达或无法表达到位的东西。下面涉及到的自定义类型主要包括结构体、枚举和联合。·结构体结构体是一种自定义的复合数
前言扫雷的设计和三子棋大同小异。这次我在之前的扫雷基础上加入了标记/取消标记雷和显示雷的数量的功能。希望对大家能有帮助。这里以9*9的棋盘为例。先附上游戏的最终效果:扫雷的C语言实现分为两个模块:1.测试模块2.游戏模块测试模块先给出主函数,在主函数加入测试模块test()int main(){ test(); return 0;}同样用printf()打印出一个简易的菜单,将其封装在menu
前言之前写过一篇关于二维数组的文章,给出了三子棋的代码,但没有详细解读。这次对代码进行了一些修改,希望对大家能有帮助。三子棋的c语言实现分为两个模块:1.测试模块2.游戏模块测试模块先给出主函数,在主函数中加入测试模块test()。int main(){ test(); return 0;}作为一款游戏,简洁明了的菜单是必不可少的。这里用printf函数打印出一个简易菜单,并将其封装在menu
·引入:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}由于数字2在数组中出现了五次,超过数组长度的一半,因此输出2如果不存在则输出NO分析一:计数器一个数字出现的次数超过数组长度的一半,看到这些字眼最先想到的就是计算出数组中的每个数出现的次数times,如果times大于数组的长度的一半,则这个数就是所
在C语言中通过循环对进行各种图形的打印有助于提升逻辑和分析能力一.线段图案用一个循环即可实现线段图案的打印#include <stdio.h>int main(){ int n; while(scanf("%d",&n) != EOF) { for(int i=0;i<n;i++) { printf("*
#include<stdio.h>int main(){ printf("Hello,world!\n"); return 0;}我是一名河南师范大学的普通本科大一在读学生,步入大学生活已一个月有余。数个月前,在我对IT行业一知半解的情况下我选择了计算机专业。在我以往对这个行业的印象中,有的只是变秃变强和电影里的nb黑客和性格怪癖的程序大佬。如今我学习计算机已经两个月了,事实并非我
--->计算机网络_1~~分组交换的两种方式 -数据报(dategram)(类似邮件) 无连接;携带目标主机的完整地址;路由器不维护主机之间的通信 -虚电路(visual circuit) 有连接;建立虚电路 ~~~接入网和物理媒体 ~~接入网-边缘系统通过接入网接入网络核心 ~指标: -带宽(BPS) -共享/独享 -~有线接入 ~住宅接入:modem -接入电话线 -通过改变音
一.寻找有序数组中的元素--寻找一个有序数组中的某个元素,并输出其下标//寻找有序数组中的某个元素#include<stdio.h>int main(){ int arr[] = { -1,2,4,5,7,8,9,11 }; int sz = sizeof(arr) / sizeof(arr[0]); int left = 0, n; int right = sz - 1;
·第一章:概论 ~互联网 -网络 节点和边 -计算机网络 节点(主机节点,即数据的源或目标;数据交换节点,即数据的中转节点)、 边(数据链路,包括接入链路和骨干链路) 和协议 -互联网(Internet,网际,网络的网络)~~从构造角度互联网: 包括节点和边、 以一组协议维持工作的计算机网络 节点和边 -> ~端系统(end system
·指针运算 -指针+-整数 -指针+-指针 指针-指针的绝对值是指针之间的元素个数 -模拟计算字符串长度 1)计数器 2)递归 3)指针运算-指针的关系运算·标准规定: 允许指向数组元素的指针与
·操作符-算术操作符 / 可以对浮点数进行计算 % 只能对整型计算 -移位操作符右移操作符 : 1.算术右移 右边丢弃,左边补原符号位(正为0,负为1) n/2 等价于 n>>1 2.逻辑右移 右边丢弃,左边补0 -整数的二进制表示 原码,反码,补码 -在内存中储存的是补码 -1: 原码10000000000000000000000000000001 反
·数组-一组相同类型元素的集合-数组的创建-数组的初始化 不完全初始化,剩下的元素默认初始化为0 ·一维数组 · strlen 和 &
·函数 (函数名,返回类型,函数参数) -常见函数类型 -库函数 -IO函数 -字符串操作函数 -字符操作函数 -内存操作函数 -时间/日期函数 -数学函数 -其他库函数 -自定义函数 -设计一个函数交换两个整形的值 -用指针远程操纵两个整型//交换两个整型的值#include<
个人学习随记
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号