数据结构与算法基础——第01周-抽象数据类型的表示与实现(1.3)

一 计算机如何处理数据

二 概念小节

三 抽象数据类型的表示与实现

3.1 抽象数据类型的表示

ADT Circle{
数据对象:D={r,x,y|r,x,y均为实数}
数据关系:R={<r,x,y>|r是半径,<x,y>是圆形坐标}
基本操作:
  Circle(&C,r,x,y)
  	操作结果:构造一个圆。
  double Area(C)
  	初始条件:圆已存在
  	操作结果:计算面积
  double Circumference(C)
  	初始条件:圆已存在
  	操作结果:计算周长
  	....
}ADT Circle
  • 一个问题抽象为一个抽象数据类型后,仅是形式上的抽象定义,还没有达到问题解决的目的
  • 要实现这个目标,就要把抽象的变成具体的,即抽象数据类型在计算机上实现,变成一个能用的具体的数据类型

3.2 抽象数据类型的实现

3.3 抽象数据类型如何实现

  • 抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现
  • 即利用处理器中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作

四 抽象数据类型实现的示例

4.1 抽象数据类型“复数”的定义

typedef struct{
	float realpart; /*实部 */
	float imagpart; /*虚部 */
}Complex            /*定义复数抽象类型 */

void assign(Complex *A,float real,float imag); /* 赋值*/
void add(Complex *c,Complex A,Complex B); /* A+B*/
void minus(Complex *c,Complex A,Complex B); /* A-B*/
void multiply(Complex *c,Complex A,Complex B); /* A*B*/
void divide(Complex *c,Complex A,Complex B); /* A/B*/

void assign(Complex *A,float real,float imag)
{
	A->realpart=real;
	A->imagpart=imag;
}
void add(Complex *c,Complex A,Complex B)
{
	c->realpart=A.realpart+B.realpart;
	c->imagpart=A.imagpart+B.imagpart;
}

说明:

  • Complex使我们定义的一个结构体类型
  • *:指针变量,它是指向Complex类型的指针
  • 不带*:Complex类型的普通变量

4.2 复数计算函数

z=(8+6i)(4+3i)/(8+6i)+(4+3i)

4.3 编程实现(伪代码)

#include<studio.h>
void main()
{
	Complex z1,z2,z3,z4,z;
	float RealPart,ImagPart;
	assign(z1,8.0,6.0);//构造复数z1
	assign(z2,4.0,3.0);//构造复数z2
	add(z1,z2,z3);//两个复数相加
	multiply(z1,z2,z4);//两个复数相乘
	if(divide(z4,z3,z)){ //两数相除
		GetReal(z,Realpart);
		GetReal(z,ImagPart);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值