数据结构与算法学习笔记(第一章 绪论)

这章知识点概念比较多,我就画了一张逻辑图来表示了,这样看起来清晰明了。(第一次用XMind,逻辑图第二章以后的内容还没写,持续更新中。。。。。。)

数据结构与算法学习笔记(第一章 绪论)_第1张图片
程序实战

  • 编写一个复数运算的程序,要求以ADT的形式来构建复数及相关运算,并计算如果所示的复数运算。
  • 在这里插入图片描述
//抽象数据类型(ADT)之复数的定义
#include
using namespace std;
typedef struct
{
    float realpart;
    float imagpart;
}Complex;//复数本结构体
void output(Complex A)
{
    cout<<A.realpart<<endl<<A.imagpart<<endl;
}
void Assign(Complex *A,float real,float imag)
{
    A->realpart=real;
    A->imagpart=imag;
}//复数构建函数
void add(Complex *A,float real,float imag)
{
    A->realpart+=real;
    A->imagpart+=imag;
}//复数加操作
void minus(Complex *A,float real,float imag)
{
    A->realpart-=real;
    A->imagpart-=imag;
}//复数减操作
void multiply(Complex *A,float real,float imag)
{
    A->realpart*=real;
    A->imagpart*=imag;
}//复数乘操作
void divide(Complex *A,float real,float imag)
{
    if(real!=0&&imag!=0)
    {
        A->realpart/=real;
        A->imagpart/=imag;
    }
}//复数除操作
void addtwo(Complex *C,Complex A,Complex B)
{
    C->realpart=A.realpart+B.realpart;
    C->imagpart=A.imagpart+B.imagpart;
}//两复数相加操作
void minustwo(Complex *C,Complex A,Complex B)
{
    C->realpart=A.realpart-B.realpart;
    C->imagpart=A.imagpart-B.imagpart;
}//两复数相减操作
void multiplytwo(Complex *C,Complex A,Complex B)
{
    C->realpart=A.realpart*B.realpart;
    C->imagpart=A.imagpart*B.imagpart;
}//两复数相乘操作
void dividetwo(Complex *C,Complex A,Complex B)
{
    if(B.realpart!=0&&B.imagpart!=0)
    {
        C->realpart=A.realpart/B.realpart;
        C->imagpart=A.imagpart/B.imagpart;
    }
    else
    {
        cout<<"Error!";
    }
}//复数除操作
void destroy(Complex *A,float *real,float *imag)
{
    *real=A->realpart;
    *imag=A->imagpart;
}//复数删除操作(功能未完善)
int main()
{
    Complex c1,c2,c3,c4,c5;
    Assign(&c1,8,6);
    Assign(&c2,4,3);
    multiplytwo(&c3,c1,c2);
    addtwo(&c4,c1,c2);
    dividetwo(&c5,c3,c4);
    output(c5);//复数一系列操作
    return 0;
}

运算结果:z的实部为2.666667(实部为float型),虚部为2(虚部也为float型)
这个程序有点冗杂,等以后了解深刻了再慢慢改进吧,奥力给!

你可能感兴趣的:(数据结构,数据结构)