结构体于链表(1)

8.8 指针程序设计示例

【例8.22】编写程序验证:任意一个十进制正整数与其反序数相加后得到一个新的正整数,重复该步骤最终可得到一个回文数(所谓反序数,是指将原数从右向左依次所取得的数。例如,123的反序数是321。所谓回文数,是指一个数从左向右读的值与从右向左读的值相等。例如,12321、234432都是回文数)。

【例8.23】使用指针实现常见排序算法——选择排序、直接插入排序和冒泡排序。

【例8.24】有n个数,编写程序使其顺序向后移m个位置,使最后的m个数变成前面的m个数。

【例8.25】将5个单词从小到大排列后输出。定义sort()函数完成对指针数组排序。

9. 结构体与链表

9.1引例

【例9.1】设计一个结构用来描述图书的基本信息,包括图书编号、书名、专业领域、作者、出版社、价格,编程实现图书的购买功能,统计出所购图书的总价并输出购书单。

9.2结构的概念与定义

1.结构的概念及定义

结构是将彼此相关的、类型不同的数据组合在一起的一种构造数据类型,它是由若干成员(也叫结构分量)组成的,每一个成员的数据类型可以是基本数据类型,也可以是构造类型。在使用某个结构之前必须先声明它,即根据需要构造它。

声明一个结构类型的一般形式为:

struct 结构名

{     类型名 成员名1;

类型名 成员名2;

……

类型名 成员名n;

};

说明:

(1)关键字struct与结构名一起构成结构类型名。例如,例9.1中的结构类型名为struct books,而不是books。

(2)大括号中的内容是结构所包括的成员,也叫结构分量。成员可以有多个,每一个的数据类型都可以是基本类型,也可以是结构类型。结构名和成员名的命名应符合标识符的规定。成员名可以与程序中其它变量同名,互不干扰。

(3)结构类型定义只是说明了结构类型的构成情况,即告诉系统该类型是由哪些类型的成员构成,各占多少个字节,系统并不分配内存空间,只有用结构类型定义了结构变量以后,系统才会为结构变量分配内存空间。

(4)定义结构类型时,不允许将成员的数据类型定义成自身的结构类型,这是因为结构类型的声明是构造阶段,系统还不知道需要分配多少内存空间。但是结构类型中可以含有指向自身类型的指针变量,因为在Turbo C2.0中系统为指针变量分配的内存空间固定为2字节,不影响结构的成功构造。

(5)结构和数组的主要区别是:结构是数目固定、不同数据类型的有序数据的集合;而数组是数目固定、具有相同数据类型的有序数据的集合。可以将结构的成员定义为一个数组,同时,数组中的每个数组元素也可以是同一个结构类型。

(6)C语言把结构声明看做是一条语句,括号后面的分号是不可少的。

2.结构的嵌套定义

在具体的应用中,为了满足实际需要,成员的数据类型也可以定义为结构类型,这样就形成了结构的嵌套。

你可能感兴趣的:(C语言,算法,数据结构,c语言,开发语言)