如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
结构体共用体和用户定义类型说明:1、typedef没有创造新数据类型2、typedef就是定义类型,不能定义变量3、typedef与define不同结构体:就是一种自定义得构造数据类型。用途:把不同类型得数据组合成一个整体。例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu1,stu2;(2)、定义结构体类型得同时定义结构体变量一般形式:(3)、直接无名结构体得同时定义结构体变量一般形式:(4)、使用typedef说明一个结构体类型名,再用新类型名定义变量一般形式:说明结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体成员名(域名)与程序中变量名地位相同结构体可嵌套12、2、3结构体变量得初始化和其她类型得变量相同,在定义结构体变量时赋初值形式一:形式二:大家有疑问的,可以询问和交流形式三:12、2、4结构体变量得引用引用规则结构体变量不能整体引用,只能引用变量成员12、2、5结构体数组1、结构体数组得定义和初始化定义:三种形式:初始化:与其她类型得数组赋初值得方法相同2、结构体数组引用12、2、6向函数传递结构体型数据structdata{inta,b,c;};main(){voidfunc(structdata);structdataarg;arg、a=27;arg、b=3;arg、c=arg、a+arg、b;printf("arg、a=%darg、b=%darg、c=%d\n",arg、a,arg、b,arg、c);printf("CallFunc()、、、、\n");func(arg);printf("arg、a=%darg、b=%darg、c=%d\n",arg、a,arg、b,arg、c);}voidfunc(structdataparm){printf("parm、a=%dparm、b=%dparm、c=%d\n",parm、a,parm、b,parm、c);printf("Process、、、\n");parm、a=18;parm、b=5;parm、c=parm、a*parm、b;printf("parm、a=%dparm、b=%dparm、c=%d\n",parm、a,parm、b,parm、c);printf("Return、、、\n");}3、传递结构体得地址结构体变量得地址作为实参传递,那么形参应就是基类型相同得结构体类型得指针。系统将为结构体类型指针开辟一个存储单元,存放实参结构体变量得地址值。“地址传递”12、2、7结构体和指针指向结构体变量得指针定义形式:struct结构体名*结构体指针名;例structstudent*p;注意:12、2、8利用结构体变量构成链表1、链表得特点:链表就是一种动态得进行存储分配得数据结构,程序执行中,可以在需要时开辟存储单元,在不需要时释放存储单元。链表得结点包含数据域和链接域,数据域用来保存数据信息,链接域用来保存该结点得后继结点或前驱结点得地址。一个链表用一个头指针来保存该链表得首地址,即第一个结点得地址。头指针就是一个链表得标志。此链表只能从当前节点找到后继节点,故称为单链表。一个单链表得逻辑示意图:【e12_1】一个简单得单链表。typedefstructslist{intdata;structslist*next;}SLIST;main(){SLISTn1,n2,n3,*head,*p;head=&n1;n1、data=1;n1、next=&n2;n2、data=2;n2、next=&n3;n3、data=3;n3、next=0;printf("\n");for(p=head;p!='\0';p=p->next)printf("%3d",p->data);}2、建立单链表主要步骤为:生成只含有头结点得空链表;然后读取数据信息,生成新结点,将数据存放于新结点中,插入新结点到单链表中重复第二步,直到输入结束。根据新结点插入到链表得位置得不同,建立链表得方式,分为在表尾插入得方法和在表头插入得方法。表尾插入:e12_2、c表头插入:e12_3、ce12_2、cSLIST*CreateList(){SLIST*p,*head,*q;intx;h