码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构 实现简单的复数ADT

时间:2020-07-10 09:45:32      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:stream   sub   构造   int   ++   nbsp   real   文件io   输出   

复数ADT(抽象数据类型, Abstruct Data Type)

ADT Complex{
数据对象 :{ e1, e2 | e1, e2(-R, R是实数集 }
数据关系 : { <e1, e2>| e1是复数的实部, e2是复数的虚部 }
基本操作 :
create(&C, x, y)
操作结果:构造复数C. 其实部和虚部分别被赋予以参数x和y的值。
getReal(C)
初始条件:复数C已存在。
操作结果:返回复数C的实部值。
getImag(C)
初始条件:复数C已存在。
操作结果:返回复数C的虚部值。
add(C1, C2)
初始条件:C1, C2是复数。
操作结果:返回两个复数C1, C2的和。
sub(C1, C2)
初始条件:C1, C2是复数。
操作结果:返回两个复数C1, C2的差
}
ADT Complex

C语言实现和简单测试,指针传参版

 

/**
 * 数据对象和数据关系的实现
 */
struct Complex{
    double real;
    double imag;//imaginary:想象的,虚构的
};

/**
 * 基本操作的实现
 */

Complex* create( Complex* C, double x, double y){
    C->real = x;
    C->imag = y;
}

double getReal(const  Complex* C){
    return C->real;
}

double getImga(const Complex* C){
    return C->imag;
}

Complex* add(const  Complex* C1, const Complex* C2){
    Complex* C = new Complex;
    C->real = C1->real + C2->real;
    C->imag = C1->imag + C2->imag;
    return C;
}

Complex* sub(const Complex* C1, const Complex* C2){
    Complex* C = new Complex;
    C->real = C1->real - C2->real;
    C->imag = C1->imag - C2->imag;
    return C;
}

int main(){
    Complex *C1 = new Complex;
    create(C1,12,1);
    Complex *C2 = new Complex;
    create(C2,3,5);
    Complex *C = add(C1,C2);
    cout<<getReal(C)<<endl;
    cout<<getImga(C)<<endl;
    return 0;
}

 

c语言实现和简单测试,不使用指针传参

/**
 * 数据对象和数据关系的实现
 */
struct Complex{
    double real;
    double imag;//imaginary:想象的,虚构的
};

/**
 * 基本操作的实现
 */

Complex create(double x, double y){
    Complex c;
    c.real = x;
    c.imag = y;
    return c;
}

double getReal(const Complex c){
    return c.real;
}

double getImag(const Complex c){
    return c.imag;
}

Complex add(Complex c1, Complex c2){
    Complex c;
    c.real = c1.real + c2.real;
    c.imag = c1.imag + c2.imag;
    return c;

}

int main() {
    Complex c1 = create(123,1);
    Complex c2 = create(131,2333);
    Complex c = add(c1, c2);
    cout<<c.real<<" "<<c.imag<<endl;
    Complex c3{12,12};
    cout<<c3.real<<" "<<c3.imag<<endl;
    return 0;

}

测试为了方便,使用了C++的输出方式

运行时需要额外增加包含头文件iostream的代码和使用std名称空间的代码

#include<stdio.h>
#include<iostream>
using namespace std;

 

数据结构 实现简单的复数ADT

标签:stream   sub   构造   int   ++   nbsp   real   文件io   输出   

原文地址:https://www.cnblogs.com/RGBTH/p/13277523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!