图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2025-09-30
在例7.8 中采用动态分配的办法为一个结构分配内存空间。每一次分配一块空间,用来存放一个学生的数据,可称为一个结点。有多少个学生就要分配多少块内存空间,也就是建立多少个结点。当然用结构体数组也可以完成上述工作,但是如果预先不能准确把握学生人数,就无法确定数组大小。而且当学生留级、退学后又不能释放该元素占用的空间。
用动态内存分配的方法就可以解决这些问题。有一个学生,分配一个结点,无须预先确定学生的人数。某学生退学,可删去该结点,释放该结点占用的存储空间。另外,用数组的方法必须占用连续内存区域,而使用动态分配时,各个结点之间可以不连续(结点内是连续的)。结点之间的联系,是用指针来实现,即在结点结构中定义一个成员项,用来存放下一结点的首地址,这个用于存放地址的成员称为指针域。
这样,在第一个结点的指针域存入第二个结点的首地址,在第二个结点的指针域存入第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接,指针域可赋以NULL。这样一种连接方式,在数据结构中称为“链表”。其示意如图7.10 所示。
图7.10 链表示意图(https://www.chuimin.cn)
图7.10 中,head 是一个指针变量,存放第一个结点的首地址。以下的结点分为两个域,一个是数据域,存放各种数据,譬如学号num,姓名name,性别sex 和成绩score 等;另一个是指针域,存放下一结点的首地址。链表中的每一个结点有同一种结构类型。例如一个存放学生学号和成绩的结点的结构如下:
前两个成员项组成数据域,后一个成员项next 构成指针域,是一个指向stu 类型结构的指针变量。
相关文章
图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2025-09-30
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2025-09-30
程序中的每个“变量灯”的“功率”大小不一,因此它们的作用域就不相同了。这一点表明形参变量只有在函数内才是有效的,这种变量的有效范围称变量的作用域。变量说明的方式不同,其作用域也不同。在内部变量的作用域内,外部变量将被屏蔽而不起作用。外部变量说明的一般格式:外部变量的作用域是从定义位置到本源文件结束。......
2025-09-30
但是允许在一个函数的定义中出现对另一个函数的调用,即函数的嵌套调用。图5.9函数嵌套调用与子程序嵌套类似,是在执行主函数main()中调用函数a()的语句时,转去执行函数a();在函数a()中调用函数b()时,转去执行函数b();在函数b()执行完毕,返回函数a()的继续执行;函数a()执行完毕,返回主函数main()。函数嵌套调用举例。图5.11程序运行结果统计一批数据中大于平均值的数据总数。图5.12程序运行结果......
2025-09-30
在一个C 程序中,有且只能有一个名为main 的函数,该函数称为主函数。程序执行始终是始于主函数,结束于主函数。C 程序中的每个语句都是以分号(;)作为语句结束符的。......
2025-09-30
图7.8程序运行结果说明:程序中定义了函数ave,其形参为结构体指针变量ps。boy 被定义为外部结构体数组,在整个源程序中有效。......
2025-09-30
从二维数组的角度看,数组名array 代表整个二维数组的首地址,也是第0 行的首地址。所以,&array[i]和array+i 等价,都是指向二维数组的第i 行。array[i]+j 指向二维数组array[i][j]。*就是数组元素 array[i][j]的值。计算 array[i][j]在数组中的相对位置为“i×m+j”,*就是数组array[i][j]的值。使用指针变量输出二维数组任一行任一列元素的值。图6.12程序运行结果说明:在主函数中定义了一个指针变量p,指向数组array 第0 行第0 列。p+是二维数组array 第i 行第j 列的地址。......
2025-09-30
相关推荐