自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 【链表尾插法】求链表中第n个数据的值

注意:要求用尾插法,头插法创建之后求的结果是肯定是错误的。根据输入数据创建链表,并输出指定位置的数据。如果输入位置不存在,则输出“位置有误”第一行输入一个整数n。第三行输入一个整数p。

2024-09-23 22:11:24 237

原创 【链表操作】前驱和后继

在以head为头指针的非空链表中,找到数据域值为x的结点,输出该结点的前一个结点和后一个结点的数据域值,如果该结点没有前驱结点(即该结点为第1个结点),则以-1代替,如果该结点没有后继结点(即该结点为尾结点),也以-1代替,如果该结点既是第1个结点也是尾结点(即只有1个结点的链表),则输出2个-1。第一行为若干个互不相同的整数,中间用空格分隔,末尾一个整数为-1,以-1前的每个整数为数据域的值创建多个结点,并将这些结点,利用尾插法链接成链表。第2行为1个整数,表示要查找的结点的数据域的值。

2024-09-23 22:10:23 374

原创 【链表操作】查找结点

【代码】【链表操作】查找结点。

2024-09-23 22:08:28 193

原创 【链表操作】链表长度

设计函数int length(struct node * head);,根据链表的头指针head,计算链表的长度(即结点个数)并返回该长度。一行字符,以#结尾,将以#前的每个字符(不包括#)为数据域的值创建多个结点,并将这些结点,利用尾插法链接成链表。

2024-09-23 22:03:19 265

原创 求链表中所有节点的和

【代码】求链表中所有节点的和。

2024-09-22 22:27:29 116

原创 输出链表中第n个结点的数据

【代码】输出链表中第n个结点的数据。

2024-09-22 22:21:52 103

原创 输出链表中倒数第二个结点的数据(以#结束)

【代码】输出链表中倒数第二个结点的数据(以#结束)

2024-09-22 21:57:39 94

原创 【链表初步】最大结点

【代码】【链表初步】最大结点。

2024-09-22 21:51:34 87

原创 【链表初步】动态链表(尾插法)

这段 C 语言代码实现了一个单链表的创建、遍历和销毁功能。通过尾插法创建链表,然后遍历链表输出其中的数据,最后释放链表所占用的内存资源。

2024-09-22 17:10:18 236

原创 链表(3)链表的基本操作

单链表的基本操作主要有;①创建链表;②输出链表;③査我结点;④插入结点,⑤鹏除结点;⑥重组链表。下面分别进行介绍。创建链表是指在程序运行时,进行动态内存分配,创建若千个结点,并把这些结点连接成串,形成一个链表。在进行动态内存分配时,需要使用在(2)介绍的内存管理函数malloc()和 free()。

2024-09-21 16:56:47 1359

原创 链表--(2)动态内存的分配释放与调整

2. 分配 5 个字符数组的内存空间:char *arr = (char *)malloc(sizeof(char) * 5);1. 分配一个整数大小的内存空间:int *ptr = (int *)malloc(sizeof(int));malloc()或calloc()函数的返回值是一个(void*)类型的指针,在使用前需要将函数的返回值转换成特定指针类型,赋给一个指针。,例如“int a=malloc(sizeof(int))”这样的代码是错误的。实例运用 计算n个数的平均值,数字随意输入。

2024-09-19 22:18:00 1023

原创 链表--(1)链表的概念

在由struct books构成的单链表中,每个结点由3个成员组成,前两个成员bno、bname组成了数据域,最后一个成员next构成指针域,它指向链表中的下一个结点(即该指针域中存放了下一个结点的地址)。根据第一个结点的指针域找到第二个结点,再根据第二个结点的指针域找到第三个结点,以此方法可以访问到链表中的所有结点。通常将链表的第一个结点称为头结点(或称链首),将链表的最后一个结点称为尾结点(或称链尾),为了便于对链表中的每一个结点进行操作(插入或删除),定义一个结构指针指向头结点,称其为头指针。

2024-09-19 21:02:27 347

原创 结构--指针

结构指针作为函数的参数,要求对应的形参是一个同类型的结构指针,此时实参向形参传递的是结构指针的值,系统会为形参指针分配一个内存单元来存放实参结构指针变量的内容。结构指针可以指向一个同类型的结构变量,但是不能指向结构变量的某一成员,如果要将某一成员的地址赋给结构指针,则需要用强制类型转换,先将成员的地址转换成结构指针的类型。(*p).n:得到p指向的结构变量str的成员n的值p->n:得到p指向的结构变量str的成员n的值。p->n十十:得到p指向的结构变量str的成员n的值,然后使成员n的值加1.

2024-09-17 18:22:49 901

原创 结构数组作为函数参数的实例

【代码】结构数组作为函数参数的实例。

2024-09-16 22:31:41 97

原创 结构 数组

即结构数组名作为函数的实参传递给对应的形参,实参和形参指向同一段内存空间,如被调用函数中改变了形参结构数组某个元素的成员值,则相应的实参结构数组元素的值也会发生改变。(2)在对结构数组进行全部初始化时,初值的个数应当与结构数组的元素个数以及每个数组元素的成员个数相匹配。(1)在对结构数组进行初始化时,需遵循数组的初始化规律,可对其中的部分数组元素初始化,但是对结构数组元素中的每个成员都要进行初始化。(3)当对结构数组的全部元素进行初始化时,可以省略数组的长度,系统根据初始化数据的多少来确定数组的长度。

2024-09-16 22:21:10 299

原创 结构体变量的引用

定义了结构变量后就能在程序中引用它了,在ANSIC中除了允许具有相同类型的构变量相互赋值以外,不能整体引用结构变量,而只能引用结构变量中的成员。结构变量的成员与普通变量一样可以参与各种运算,对结构变量的赋值、存取、运算都是通过引用其成员进行的。但是不能把结构变量作为一个整体进行赋值、存取或运算,只能对结构变量的成员进行赋值、存取或运算。例如对于定义的结构变量bk1,下面的用法是错误的。(2)对结构中数组成员的引用也是通过逐个引用数组元素来实现的,如:bk1.bname[0]

2024-09-16 18:19:10 503

原创 c语言 —— 结构变量

方式(3)中由于省去了结构名,在此定义语句后面无法再定义这个类型的其他结构变量,除非把定义过程再写一遍。另外,以后如果再声明成员完全相同的结构类型,也和此次定义的结构类型属于不同的结构类型。因此在声明了结构类型后,还需要定义结构变量,以便在程序中引用它。同其他基本数据类型的变量一样,结构变量在定义的同时也可以进行初始化。(1)对结构变量初始化时,需要按照其成员出现的顺序对每个成员依次赋值,不能跳过前面的成员给后面的成员赋值,例如下面的用法是错误的。(2)不能在结构内部给成员赋初值,例如下面的用法是错误的。

2024-09-16 18:02:13 574

原创 结构体初始和嵌套

例如,在描述一本图书的信息时,图书编号、书名、专业领域、作者、出版社、单价等都是和图书相关的基本信息,这些信息是作为一个整体来描述图书的,如果将它们分别定义为互相独立的简单变量,则难以体现它们之间的内在联系。结构是将彼此相关的、类型不同的数据组合在一起的构造数据类型,它是由若干成员(也称为结构分量)组成的,每一个成员的数据类型可以是基本数据类型,也可以是构造类型。(4)定义结构类型时,不允许将成员的数据类型定义成自身的结构类型,这是因为结构类型的声明是构造阶段,系统还不知道需要分配多少内存空间。

2024-09-16 17:31:23 345

原创 指针变量的总结

2024-09-14 09:37:44 256

原创 二级指针与指针数组

如char *a[5],则a数组中的5个元素都是指向char 类型的指针。定义格式中,[]的优先级高于*,所以首先是a[5],表示a是一个有5个元素的数组,然后才与*结合,表示数组中的元素都是指针类型。注意要区分char(*a)[5]与char*a[5]的定义格式,char(*a)[5]是行指针,指向一维数组;char*a[5]是指针数组,每个数组元素为指针类型的数组。为了处理方便,把若干指针变量按有序的形式组织起来,构成指针数组,数组中的每元素都是指针变量。在结构上,指针数组与其它类型的数组是一样的。

2024-09-13 11:27:50 177

原创 指针与字符串

实例将字符串“a1aa2a3a4”中a替换成b。实例来使用指针与下标方式访问字符串的实例。

2024-09-13 11:20:03 399

原创 指向二维数组的行指针变量

n表示二维数组分解为多个一数组的长度,也就是所指向的二维数组的列数。格式中,()号、*号和[n]都不可省略注意:行指针变量用于指向一行数组元素的起始地址,而非数组中的元素。定义行指针变量以后,只要将二维数组的首地址赋给行指针变量,则行指针变量就与二维数组建立了联系,二维组也就成为行指针变量指向的对象。二维数组的每一行都视为一个一维数,可以定义一个指针来指向每一行的一维数组则行指针变量是指向一行数组元素的起始地址。声明行指针变量的一般格式为 类型名(*指针变量名)[n]以二维数组来实现移动行指针行列。

2024-09-12 21:19:20 263

原创 指针与二维数组

(a+i)+j 和 a[i]+j是二维数组第i行、第j列的地址, 问数组元素a[i][i]的等价表达式有三种:a[i][i](下标法)、*(a[i]+j)和*(*(a+i)+j)(指针法)。行列地址的转换方式为:行地址前加“*”将变为列地址,如a为行地址,*a就是列地址:列地址前加“&”将变为行地址,例如,a[0]为列地址,&a[0]为行地址。如a[1]+1和*(a+1)+1均为列地址,则*(a[1]+1)和 * (* (a+1)+1)均表示数组元素a[1][1]。

2024-09-12 20:46:30 290

原创 指针的运算

只适用于两个指针所指对象在同一数组的情况。当 p > q 时p 指元素在q所指元素之前。指针与整数的加减结果是指针值,即地址。指针加或减n都是第n个元素的首地址。用于两指针所指对象在同一数组中,来获取两个指针间有多少个数组元素。自加或自减n 结果都是指针值,既地址。(3)(*p)++等价于a[0]++;(1)*p++ 等价于*(p++);(2)*++p等价于*(++p);(4)++*p等价于++(*p);2.指针的自加或自减运算。1.指针的加减整数的运算。3.指针的关系运算。4.指针的相减运算。

2024-09-12 20:28:38 118

原创 指针与一维数组

a和p是有差别的,数组名a是一个指针常量,不可赋值,不能进行“a++”操作;p是一个指针变量,可赋值,可以进行“p++”操作。对于数组元素的访问,可以使用下标,也可以使用指针变量,移动指针可以指向数组中的任意一个元素。注意p[i]表达式中p不是数组名,是指针,这是指针的下标表示法。我们可以利用运算符+,*,[]建立指针与一维数组的关系,如下。因为p是指向一维数组的首元素的指针。例如,一维数组和指针的如下定义。下面介绍四种访问数组元素的四种等价方式。

2024-09-08 12:16:48 231

原创 指针与函数(三)

函数和数组一样,经系统编译后,其目标代码在内存中连续存放,其名字本身就是一个地址,是函数的入口地址。C语言中,指针可以指向变量,也可以指向函数。定义了指向函数的指针以后,必须将一个函数名(函数的入口地址)赋给函数指针,然后才能用函数指针间接调用该函数。/*定义指向函数的指针pc,限定pc所指函数有两个整型参数*/指问函数的指针的定义格式为 类型名(*指针变量名)参数表 其中参数表为函数指针所指向函数都所有形参。/*指针pc指向函数ave*/三 .指向函数的指针。

2024-09-07 22:20:58 190

原创 指针与函数(二)

注意函数中数组的存储类型一定要是静态(static)的,如果不是静态数组,函数返回时,数组已经被释放,则不能返回地址。指针函数在处理动态数据结构时非常有用。返回值的指针类型的函数称为返回指针值的函数。返回指针值的函数的一般形式为。数据类型名 *函数名(参数表)例为 int * max (int n);二 返回指针值的函数。

2024-09-07 22:00:58 386

原创 指针与函数(一)

C语言中,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个地址传递给函数,函数可以通过指针访问指针所指向的对象。同样,函数的返回值可以是整型、实型、字符型,也可以是指针类型。指针作为函数的形参时,在形参说明时需要使用格式“类型名*指针名”,*号不能省略,而在函数定义的说明部分,*号的作用是类型说明符。在形参说明格式需要使用格式为“类型名 * 指针名”这样的类型。要注意里面*的使用,要理解*作为间接访问符的意义。一 .指针作函数的参数。实战利用函数实现交换两个变量的值。

2024-09-07 21:40:57 197

原创 访问指针变量的实例

【代码】访问指针变量的实例。

2024-09-07 21:25:55 95

原创 指针初始化和定义

在计算机中我们把内存单元的编号也称为地址。C语言中给地址起了新的名字叫:指针。所以我们可以理解为:内存单元的编号 ==地址 == 指针。这里的*是指针的一种表示,告诉我们是指针。注意的指针变量只能存放地址不能错误赋值。1.使用未初始化的指针,导致出现随机的结果。3. 使用指针变量初始化其他同类型指针变量。4. 指针可以被初始化为0或NULL。为 指针变量名1 = 指针变量名2;3.指针与初始化指针对象类型不一致。2. 指针指向数组的初始化。1.指针指向变量的初始化。注意指针类型一定要相同。

2024-09-07 17:14:52 332

原创 【无标题】c语言中实用函数

2024-09-07 15:44:35 362

原创 如何定义和引用二维数组

以上定义了一个float型的二维数组,第1维有3个元素,第2维有6个元素。每一维的长度分别用一对方括号括起来。二维数组定义的一般形式为 类型说明符 数组名【常量表达式】【常量表达式】(2)所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。一.二维数组 常称为矩阵,把二维数组写成行和列的排列形式。(4)第一维的长度可以不指定,但是第二段长度不能省。(1)分行给二维数组赋初值。三.怎么引用二维数组的元素。数组名【下标】【下标】(3)对部分元素赋初值。二.怎么定义二维数组。

2024-08-14 16:28:20 385

原创 一维数组--冒泡排序

【代码】一维数组--冒泡排序。

2024-08-14 15:30:20 402

原创 一维数组---选择排序

选择法排序是交换法排序的改进方法 用于排序的双重循环中,每当a[i]>a[j]时,就交换 a[i]与 a[j],实际上不需要每次都交换,只要增设一个变量 k,用于记录每次较小数的下标,只需在本轮比较结束后,交换a(i)与a(k)即可。

2024-08-14 15:28:46 117

原创 一维数组-交换排序

【代码】一维数组-交换排序。

2024-08-14 15:27:14 391

原创 数组---怎么样定义和引用数组

定义数组可以包括常量和符号常量如 int [ 3+5 ];定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用的“数组名。数组是从内存中开辟一个空间,存放数组以int a [10]为例,如下。所以我们了解到数组的基本定义为 类型符 数组名 [常量表达式]数组开辟的空间是从【0】开始,所以不存在开辟一个数据的数组。(3)如果个数以确定,可以不定义数组长度,系统自动补充。[ 下标]”形式相同,但舍义不同。没有补充完的位置自动定义为0.将随机一组数据,按顺序排列。引用数组的元素表示形式为。

2024-08-14 15:22:54 358

原创 用for语句来实现循环

表达式2:是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。表达式3:作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值(如i-1)for(循环变量赋初值;for语句的一般形式为。

2024-08-11 22:07:40 146

原创 循环控制程序设计(1)--while

在日常生活中或是程序所处理的问题中常常用到的循环问题。

2024-07-31 16:39:32 210

原创 用switch实现多分支选择结构

等 级 grade定义为字符变量 ,从键盘输人一个大写字母, 赋给变量grade , switch得到grade 的值并把它和各case中给定的值 ( ' A ' ,' B ' ,' C ' ,’ D ' 之 一 )相比较 ,如果和其中之一相同,则执行该case 后面的语句(即printf 语句)。如果输人的宇符与' A',’B','C',‘D'都不相同,就执行default 后面的语句,输出“输人数据有错”的信息。后面跟的常量表达式必须是与表达式类型相同的常量值。后面的语句,直到遇到。

2024-07-17 10:51:11 230

原创 利用三目运算符来改变字母大小写

利用ASCII来转换大小写。

2024-07-16 21:01:42 380

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除