数据结构类C语言.ppt
v类类C语言采用了标准语言采用了标准C语言的语法结构,同时对语言的语法结构,同时对一些语法细节进行了简化,并添加了一些描述方法。一些语法细节进行了简化,并添加了一些描述方法。v用类用类C写的代码是伪代码。因为不完全符合写的代码是伪代码。因为不完全符合C语语言的规范,所以不能被言的规范,所以不能被C编译器编译编译器编译。类类C语言简介语言简介1.存储结构用类型定义(typedef)描述 数据元素(结点)的类型名约定为数据元素(结点)的类型名约定为ElemType 注意注意这不是一种具体的类型名,在具体使用时,这不是一种具体的类型名,在具体使用时,必须用具体的数据类型类代替必须用具体的数据类型类代替ElemeType类类C语言简介语言简介2.操作算法用以下形式的函数描述 函数返回值类型函数返回值类型 函数名函数名(参数表参数表)/对算法的说明文字对算法的说明文字 函数语句序列函数语句序列 /函数名函数名类类C语言简介语言简介3.选择语句条件句条件句1:if(条件表达式条件表达式)语句语句T;条件句条件句2:if(条件表达式条件表达式)语句语句T;else 语句语句F;类类C语言简介语言简介开关语句开关语句:格式格式1:switch(表达式表达式)case 值值1:语句序列语句序列1;break;case 值值2:语句序列语句序列2;break;.case 值值n:语句序列语句序列n;break;default:语句序列语句序列n+1;格式格式2:switch case 条件条件1:语句序列语句序列1;break;case 条件条件2:语句序列语句序列2;break;.case 条件条件n:语句序列语句序列n;break;default:语句序列语句序列n+1;类类C语言简介语言简介4.循环语句 for语句语句:for(赋初值句赋初值句;条件条件;修改句修改句)语句语句;while语句语句:while(条件条件)语句语句;do_while语句语句:do 语句序列语句序列;while(条件条件);类类C语言简介语言简介5.结束语句函数结束语句函数结束语句:return;或或 return(表达式表达式);case结束语句结束语句:break;异常结束语句异常结束语句:exit(错误代码错误代码);类类C语言简介语言简介6.输入输出语句输入语句输入语句 :scanf(“格式串格式串”,变量变量1,.,变量变量n);scanf(变量变量1,.,变量变量n);输出语句输出语句:printf(“格式串格式串”,变量变量1,.,变量变量n);printf(变量变量1,.,变量变量n);类类C语言简介语言简介7.逻辑运算约定 与运算与运算&:条件表达式条件表达式A&条件表达式条件表达式B 当条件表达式当条件表达式A为假时为假时,不再对条件表达式不再对条件表达式B求值求值 或运算或运算|:条件表达式条件表达式A|条件表达式条件表达式B 当条件表达式当条件表达式A为真时为真时,不再对条件表达式不再对条件表达式B求值求值 类类C语言简介语言简介8.内存的动态分配与释放分配空间:分配空间:指针变量指针变量=(强制指针类型强制指针类型)malloc(分配长度分配长度);指针变量指针变量=(强制指针类型强制指针类型)realloc(老基址,老基址,新分配的长度新分配的长度);释放空间:释放空间:free(指针变量指针变量);类类C语言简介语言简介realloc函数的使用:改变数组空间的大小int*a=(int*)malloc(sizeof(int)*10),*b;。b=(int*)realloc(a,sizeof(int)*15);类类C语言简介语言简介a 2 4 6 8 1 3 5 7 9 00123456789b2468135790012345678910 11 12 13 14b012345678910 11 12 13 14申请新数组空间申请新数组空间复制老数组的内容复制老数组的内容释放老数组的空间释放老数组的空间9.关于“引用参数”在函数参数表中,参数的前面可以加符号在函数参数表中,参数的前面可以加符号“&”修修饰,表示该参数为饰,表示该参数为引用参数引用参数(变参变参)。在函数体内,在函数体内,如果对引用参数的值进行了修改,这如果对引用参数的值进行了修改,这个变化能够传递到相应的实参个变化能够传递到相应的实参。没有用没有用“&”修饰的参数是修饰的参数是值参值参。引用参数可以用来作为传递运算结果的管道引用参数可以用来作为传递运算结果的管道 类类C语言简介语言简介例:void add(int x,int&y)x+;y+;main()int a=0,b=0;add(a,b);printf(“a=%d,b=%d”,a,b);打印:打印:a=0,b=1a=0,b=1 类类C语言简介语言简介举例:ADT Complex的类C表示和实现 typedef struct /复数类型定义复数类型定义float real,imag;complex;int InitComplex(complex&z,float v1,float v2)/复数初始化复数初始化 z.real=v1;z.imag=v2;return 1;类类C语言简介语言简介int GetReal(complex z,float&RealPart)/取得已知复数取得已知复数z的实部的实部RealPart,并返回,并返回1RealPart=z.real;return 1;int GetImag(complex z,float&ImagPart)/取得已知复数取得已知复数z的虚部的虚部ImagPart,并返回,并返回1ImagPart=z.imag;return 1;类类C语言简介语言简介int Add(complex z1,complex z2,complex&sum)/求得两个复数求得两个复数z1和和z2的和的和sum,并返回,并返回1sum.real=z1.real+z2.real;sum.imag=z1.imag+z2.imag;return 1;int Subtract(complex z1,complex z2,complex&sub)/求得两个复数求得两个复数z1和和z2的的差差sub,并返回,并返回1sub.real=z1.real-z2.real;sub.imag=z1.imag-z2.imag;return 1;类类C语言简介语言简介int Multiply(complex z1,complex z2,complex&mult)/求得两个复数求得两个复数z1和和z2的的积积mult,并返回,并返回1 mult.real=z1.real*z2.real-z1.imag*z2.imag;mult.imag=z1.real*z2.imag+z2.real*z1.imag;return 1;类类C语言简介语言简介int Division(complex z1,complex z2,complex&div)/求得复数求得复数z1除以复数除以复数z2的商的商div,并返回,并返回1 if(z2.real=0&z2.imag=0)return 0;temp=z2.real*z2.real+z2.imag*z2.imag;div.real=(z1.real*z2.real+z1.imag*z2.imag)/temp;div.imag=(z2.real*z1.imag-z1.real*z2.imag)/temp;return 1;类类C语言简介语言简介