数据结构-c语言描述(本科)第2章

数据结构-c语言描述(本科)第2章

ID:34572587

大小:276.76 KB

页数:87页

时间:2019-03-08

数据结构-c语言描述(本科)第2章_第1页
数据结构-c语言描述(本科)第2章_第2页
数据结构-c语言描述(本科)第2章_第3页
数据结构-c语言描述(本科)第2章_第4页
数据结构-c语言描述(本科)第2章_第5页
资源描述:

《数据结构-c语言描述(本科)第2章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章两种基本数据结构第2章两种基本数据结构2.1结构与联合2.2数组2.3链表习题2第2章两种基本数据结构2.1结构与联合2.1.1结构结构(structure)是C语言提供的聚合数据的机制。使用结构可以将不同类型的数据组合成一个整体,便于使用。一个结构(在许多其他程序设计语言中称为记录record)是数据项的聚集(collection)。每个数据项有名称和类型,它们可以是不同的数据类型。第2章两种基本数据结构例如:structstudent{charname[20];charsex;intage;}第2章两种基本数据结构该语句定义了一个结构类型structstudent,可以使

2、用它作为定义结构变量的类型,如structstudentstudA;,这里,变量studA是一个结构。可以使用成员运算符“.”对结构变量的成员赋值。如,strcpy(studA.name,"Wang");/*字符串赋值函数*/studA.age=19;studA.sex='M';对成员变量可以像对普通变量一样进行其类型所允许的各种运算。ANSIC允许将一个结构变量整体赋值给另一个具有相同结构的结构变量,但不能将一个结构变量作为一个整体进行输入和输出,也不能直接判定两个结构是否相同。第2章两种基本数据结构为了能像使用C语言类型int一样使用一个结构类型,我们可以用typedef创建自

3、己的结构类型Student如下:typedefstructstudent{charname[20];charsex;intage;}Student;这里,student是结构名,Student是结构类型名,我们可以像使用类型int一样用Student定义结构变量。定义变量的语句为StudentstudA;,无须加保留字struct。事实上,结构名称与结构类型的名称可以相同。第2章两种基本数据结构2.1.2联合联合(union)是一个变量,它可以存放不同类型的数据对象。例如在编译程序的符号表管理中,假定常量可以是int、float或char类型。一种最简单的管理方法是不考虑它们的类型

4、,分配相同大小的空间存放各种常量。联合的目的是使用单一变量,存放多个类型的值。显然任何时候只能存放其中之一。定义一个联合的方法类似于结构,见下面的例子。第2章两种基本数据结构unionu_tag{intival;floatfval;charchval;};这里,unionu_tag是一个联合类型,可以用来定义联合变量,如unionu_taga,b;。分配给联合变量使用的存储块的大小是它的最大变量所需的存储块的大小。第2章两种基本数据结构联合可以放在结构或数组中,反之亦然。访问一个结构中的联合的成员等同于访问嵌套的结构变量。例如,struct{charname[20];intflag

5、s;intutype;union{intival;floatfval;charchval;}u;}symtab[maxsize];第2章两种基本数据结构引用联合的成员ival的方式是:symtab[i].u.ival。我们也可以像创建结构类型一样用typedef创建自己的联合类型,如下面的定义:typedefunionu_tag{intival;floatfval;charchval;}Constval;第2章两种基本数据结构2.2数组数组(array)是大家熟悉的一种数据类型,几乎所有的程序设计语言都包含数组数据类型。在对数据结构的讨论中,我们通常使用数组描述数据结构的顺序表示,

6、换句话说,使用数组实现数据的顺序存储结构。数组与结构相同,一旦定义,便不能再增加和删除元素,只能访问和修改数组元素的值,因此被称为静态数据结构(staticdatastructures)。一个静态数据结构一旦建立,它包含的元素个数将不变。数据元素个数可变的数据结构称为动态数据结构(dynamicdatastructures),可以在动态数据结构中插入或删除数据元素。数组与结构不同的是,数组的元素具有相同的数据类型,而结构的元素(域)可以是不同类型。所以,数组元素用下标(index)标识,而结构的域由域名(fieldname)引用。第2章两种基本数据结构2.2.1一维数组一维数组(o

7、ne-dimensionalarray)常用于顺序存储的线性数据结构中。让我们先来看C语言中的一维数组。例如,intone[5];定义了5个整数组成的一个数组,下标从0到4。数组元素可以在定义时赋值,也可以通过引用数组元素对元素赋值。例如,intone[5]={0,1,2,3,4};或for(i=0;i<5;i++)one[i]=i;第2章两种基本数据结构数组通常采用顺序表示,即数组中的元素按一定顺序存放在一个连续的存储区域。一个一维数组可以直接映射到一维的存储空间。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。