结构体,顺序表_第1页
结构体,顺序表_第2页
结构体,顺序表_第3页
结构体,顺序表_第4页
结构体,顺序表_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本节概述 知识点补充(结构体的定义使用) 线性表(概念,操作) 顺序表的插入和删除操作 为了反映它们之间的联系,把它们组织成一个组合项。 在每一个组合项中包含若干个类型不同(或相同)的数据项。 C语言中允许用户定义这样一种数据结构,称为“结构体”。(记录) 声明一个结构体类型的一般形式:struct 结构体名 成员表列 ; 各个成员都 应进行声明: 类型名 成员名; 例:struct student int num; char name20; char sex; int age; float score; char addr30; ; 定义结构体类型变量的方法 1、先声明结构体类型再定义变量

2、名例:先定义student结构体再定义结构体变量: struct student stu1,stu2; 2、在声明类型的同时定义变量一般形式: struct 结构体名 成员表列 变量名表列; 例:struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 3、直接定义结构类型变量一般形式: struct 成员表列 变量名表列;结构体变量的引用 引用成员: 结构体变量名.成员名“.”是成员运算符,优先级别最高。例:对成员赋值: stu1.num=1010;结构体变量的初始

3、化 结构体变量可以在定义时指定初始值。struct student int num; char name20; int age; float score;stu1=10,”Li Lin”,20,90; 结构体数组 结构体数组中每个数组元素都是一个结构体类型的数据,它们分别包括各个成员项。 定义结构体数组1. struct student int num; struct student stu3; 数组各元素在内存中连续存放。 2. struct student int num; stu3;3. struct int num; stu3; 结构体数组的初始化 一般形式是在定义数组的后面加上: =

4、 初值表列;1) struct student int num; stu3=.,.,.;2) struct student int num; ; struct student stu =.,.,.; 指向结构体类型数据的指针 一个指针变量指向一个结构体变量,指针变量的值是结构体变量的起始地址。 指针变量可以指向结构体数组中的元素 指向结构体变量的指针struct student stu_1;struct student *p;P=&stu_1; 使用指针后,引用结构体变量成员的形式: stu_1.num(*p).nump-num 指向结构体数组的指针struct student int

5、 num; stu3=.,.,.;struct student *p;p=stu; 指向结构体数组的指针 1)P+后,p指向下一个数组元素的起始地址 2) 若定义了p为指向结构体类型数据的指针变量,则p不应用来指向数组元素中的某一成员。 用typedef定义类型 可以用typedef声明新的类型名来代替已有的类型名。 如: typedef int INTEGER; 则:int a;与INTEGER a;等价。 用typedef声明结构体类型: typedef struct int month; int day; int year; DATE; 定义变量:DATE birthday; 说明: 1

6、) typedef 不能用来定义变量 2) typedef 没有创造新的类型1.2 线性结构线性结构 最简单且最常用的一种数据结构 基本特点是数据元素有序并有限 线性结构有线性表、堆栈、队列、数组、串等类型。1.2.1 线性表线性表a ai i(1 1 i i n n)是线性表)是线性表中第中第i i个序号的数据元素个序号的数据元素同一线性表中的元素同一线性表中的元素必定具有相同的特性必定具有相同的特性线性表主要的基本操作线性表主要的基本操作1.2.1.1 顺序表 在计算机中是顺序存储结构的线性表。 数据元素按其逻辑次序依次存放在一组地址连续的存储单元里。 即逻辑上相邻的元素存放在内存的相邻单

7、元中。顺序表中顺序表中数据元素数据元素a ai i的内存地址的内存地址每个元素的存储地址每个元素的存储地址是该元素在表中索引是该元素在表中索引号的线性函数。号的线性函数。顺序表顺序表的存储结构的存储结构内存地址内存地址内存状态内存状态元素索引号元素索引号Loc(a1)Loc(a1 +k) Loc(a1 )+(i-1)*k Loc(a1 )+(n-1)*k a1 a2 ai an 1 2 i n随机存取结构随机存取结构顺序表的存储顺序表的存储C C语言中一维数组是采用顺序存储表示的语言中一维数组是采用顺序存储表示的可以用数组类型来描述顺序表可以用数组类型来描述顺序表顺序表结构类型说明顺序表结构类

8、型说明typedef struct elemtype dataMAXNUM; int num; listtype;listtype list;顺序表最大顺序表最大元素个数元素个数表示顺序表表示顺序表长度的变量长度的变量定义顺序表定义顺序表list顺序表顺序表listlist的初始化的初始化 void initiatelist ( listtype *p) p = &list; p - num=0;算法算法1 1顺序表的插入算法顺序表的插入算法算法算法1 1实现方法实现方法 if (ip-num) printf(“i is invalid value”); return (false);

9、 for ( j=p-num-1;j=i;j- -) p-dataj+1= p-dataj; p-datai=x; p-num+; return (true);算法算法:#define true 1#define false 0int insert(listtype *p, int i, elemtype x) int j; if (p-num= MAXNUM) printf(“can not insert”); return (false); 算法算法1的程序的程序实例实例1866078755590 90 55 78 60 86例如:插入元素75,插入位置为4,则90和55两个元素应向后移。算法算法2 2顺序表的删除算法顺序表的删除算法 for (j=i+1;jnum;j+) p-dataj-1=p-dataj; p-num - -; return (true);算法算法:#define true 1#define false 0int delete (listtyp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论