【计算机】3.4 结构类型及链表处理.docVIP

  • 0
  • 0
  • 约9.41千字
  • 约 6页
  • 2018-02-26 发布于江苏
  • 举报

【计算机】3.4 结构类型及链表处理.doc

【计算机】3.4 结构类型及链表处理

3.4 结构类型及链表处理 3.4.1 结构变量定义及使用 C++提供了结构这一聚合数据类型,它是将具有一定联系的一组数据类型相同或不同的数据组织起来,进行统一管理,并赋予一个统一的名字。 结构可以是由不同数据类型的数据成员组成,面向对象的结构类型还可以包含函数说明和定义,从而可以定义一个类,用标识符struct 定义的类与用标识符class定义的类,其主要区别在于其成员的缺省访问属性不同。组成结构的每个数据称为该结构的成员。在使用结构之前,必须对该结构进行定义,以告诉编译器该结构的成员个数及其数据类型。本栉首先介绍非面向对象的结构,它属于一种聚合数据类型。 结构定义的语法形式如下: struct variable { data_type1 name1; data_type2 name2; . . . data_typen namen; }; 注意:结构的定义是一条语句,在其结尾处需要加一个语句结束符“;”。 例如:下面是一个通信录记录结构定义的一个例子: struct addr { char name[30]; char street[40]; char city[20]; char state[2]; unsigned long zip; }; 在对结构进行定义后,就可以用来指明使用该结构的具体对象,这就称为结构的实例化,其一般形式如下: struct variable name; 或 variable name;(常用形式) 其中struct是结构的标识符,variable是已经定义过的结构名称,name是结构变量名称。 在定义了结构的变量之后,可以用操作符“.”来访问结构中的成员数据。访问结构数据成员的形式如下所示: name.member;//name是结构变量的名字,member是其某一成员数据的变量名。 3.4.2 结构数组 最常用的结构对象是结构数组,而结构数组最主要的用途便是构造链表。 为了定义一个结构数组,必须首先定义一个结构类型,然后利用该结构类型来说明一个数组。为了访问数组中某一元素的某成员数据,必须指明该元素在数组中的下标及该成员数据的名称。如以下是使用上一节中定义过的通信记录结构定义结构数组并访问其成员数据的例子: addr binfo[100]; binfo[0].zip=1234; 3.4.3 结构指针 结构作为一种聚合数据类型,其变量是在内存中进行存放的,也有一定的内存地址,因而也就存在结构变量指针。结构指针可以用来指向任何统一结构类型的结构变量,可以通过结构指针来访问结构的成员数据。 定义结构指针的一般语法结构如下: struct variable *name; 或 variable *name; 同样,对结构指针必须初始化或赋值,使其指向结构变量。对结构指针进行赋值时,需要将一个结构变量的地址赋给它,即对结构变量进行取址操作或利用其他结构指针对某个类型匹配的结构指针进行赋值。利用结构指针来对结构的成员数据进行访问的一般形式如下所示: structure_variable-member_name; 其中structure_variable是结构变量的名字,而member_name是成员数据的变量名。 [例3.6] 使用结构指针的例子。(EX3_6.CPP) 3.4.4 结构的嵌套 结构的嵌套指的是结构的成员数据中包含其他结构,形成复杂的数据结构在C++中,结构可以作为其他结构的成员数据。只要在编译器或计算机支持的范围内,结构可以多级地嵌套。 注意:程序中出现的所有结构,在结构中都必须的定义。 对于结构嵌套的情况,要访问作为某一结构的成员的结构的成员数据,需要进行多级逐层引用。 [例3.7] 结构嵌套的应用。EX3_7.CPP 3.4.5 链表类数据处理 链表是计算机数据处理中常用的一种数据结构。在链表中,各元素具有相似的结构,且各元素之间依次链接形成民链状的表单结构,且链表的线性顺序连续是逻辑上的,而不是依赖分配连续存储空间来维持的,因而在物理结构上是灵活的,属于线性动态结构。结构是实现链表类数据处理的强有力的工具,有很多衫的链表结构都是用结构构造出来的。 为了实现通过链表结构中某一元素访问其他元素,即结构变量提供可以指向其他结构变量的机制,需要使用递归结构类型。在递归结构类型中,结构的成员数据中包含指向该结构类型本身的结构指针,利用该指针,可以实现对同类型的结构变量的访问。 例如,一个集邮爱好者想为他的收藏品建立一个卡片式档案。每张卡片记录一张邮票的情况,包括邮票名称,尺寸、发行日期、描述信息等内容。以这些要包含的内容作为成员函数,构成一个结构类型,每张卡片作为一个结构变量来处理,但这些卡片如何组织起来需要好好考虑一下。如建立结构数组或链表结构,比较而言,链表结构

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档