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

Posted rgbth

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 实现简单的复数ADT相关的知识,希望对你有一定的参考价值。

复数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的主要内容,如果未能解决你的问题,请参考以下文章

用结构体函数计算两个复数的四则运算的程序分析、重难点和结论?

c语言复数四则运算

队列ADT

C#编程:定义一个复数类,实现复数的简单加法运算,并能显示结果。

代码片段 - Golang 实现简单的 Web 服务器

c++简单复数计算器