原题链接:蓝桥杯算法训练VIP-链表数据求和操作
解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct plural{ //定义结构体变量
int real;
int unreal;
struct plural* next;
}* node,Node;
node creat();//创建链表
void output(node linked);//获取链表数据
void delete_linked(node header);//删除链表
//主函数
/*----------------------------------------------------------*/
int main()
{
int a,b;//实部和虚部
node head;
head = creat();
output(head);
return 0;
}
//创建链表
/*----------------------------------------------------------*/
node creat()
{
node header;//定义头结点
header = (node)malloc(sizeof(Node));//为头结点开辟空间
header->next=NULL;//将头结点的next置为空NULL
node tail=header;//定义一个临时变量tail储存header
node insert;//定义插入结点的变量
for(int i=0;i<10;i++)//输入10个结点
{
insert = (node)malloc(sizeof(Node));
scanf("%d %d",&insert->real,&insert->unreal);//输入插入结点的值
insert->next = NULL;//采用后插法插入结点
tail->next = insert;
tail = insert;
}
return header;//返回头结点
}
//获取链表数据并释放结点
/*----------------------------------------------------------*/
void output(node linked) //定义一个头结点
{
int sum_real=0,sum_unreal=0;
linked = linked->next;//初始化链表linked指向下一个结点next
node free_flag;//定义一个变量用于释放结点
while(linked != NULL)
{
sum_real += linked->real;//结点实部的累计和
sum_unreal += linked->unreal;//结点虚部的累计和
free_flag = linked;//将结点数据赋值给free_flag便于下方释放结点
linked = linked->next;//刷新结点
free(free_flag);//释放结点空间
}
printf("%d+%di",sum_real,sum_unreal);//打印所有结点数据的和
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复