數據結構 實現簡單的復數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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM