解题思路:
createComplex函数用于创建一个新的复数节点,并为其分配内存。

insertComplex函数用于将复数节点插入链表中。

printComplexList函数用于打印链表中的复数。

calculateSum函数用于计算链表中所有复数的和。


注意事项:

在 createComplex函数中,需要为新节点分配内存,并将实部和虚部的值赋给节点的成员变量。

在 insertComplex函数中,需要遍历链表找到最后一个节点,并将新节点插入到链表末尾。

在 printComplexList函数中,需要遍历链表并打印每个节点的实部和虚部的值。

在 calculateSum函数中,需要遍历链表并累加每个节点的实部和虚部的值,最后返回表示和的新节点。


参考代码:

#include <stdio.h>

#include <stdlib.h>


typedef struct Complex {

    double real;

    double imag;

    struct Complex* next;

} Complex;


Complex* createComplex(double real, double imag);

Complex* insertComplex(Complex* head, Complex* newComplex);

void printComplexList(Complex* head);

Complex* calculateSum(Complex* head);


int main() {

    Complex* head = NULL;

    Complex* newComplex = NULL;

    double real, imag;


    // 读入10个复数并建立链表

    for (int i = 0; i < 10; i++) {

        scanf("%lf %lf", &real, &imag);

        newComplex = createComplex(real, imag);

        head = insertComplex(head, newComplex);

    }


    // 打印链表中的复数

    // printComplexList(head);


    // 计算复数的和

    Complex* sum = calculateSum(head);

    printf("%.0lf+%.0lfi\n", sum->real, sum->imag);


    // 释放链表内存

    Complex* current = head;

    while (current != NULL) {

        Complex* temp = current;

        current = current->next;

        free(temp);

    }


    return 0;

}


// 创建一个复数节点

Complex* createComplex(double real, double imag) {

    Complex* newComplex = (Complex*)malloc(sizeof(Complex));

    newComplex->real = real;

    newComplex->imag = imag;

    newComplex->next = NULL;

    return newComplex;

}


// 将复数节点插入链表

Complex* insertComplex(Complex* head, Complex* newComplex) {

    if (head == NULL) {

        head = newComplex;

    } else {

        Complex* current = head;

        while (current->next != NULL) {

            current = current->next;

        }

        current->next = newComplex;

    }

    return head;

}


// 打印链表中的复数

// void printComplexList(Complex* head) {

//     Complex* current = head;

//     while (current != NULL) {

//         printf("%.2lf + %.2lfi\n", current->real, current->imag);

//         current = current->next;

//     }

// }


// 计算复数的和

Complex* calculateSum(Complex* head) {

    Complex* current = head;

    Complex* sum = createComplex(0, 0);

    while (current != NULL) {

        sum->real += current->real;

        sum->imag += current->imag;

        current = current->next;

    }

    return sum;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论