解题思路:
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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复