原题链接:蓝桥杯算法训练VIP-链表数据求和操作
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define MALLOC (Node*)malloc(sizeof(Node));//为书写方便定义宏
typedef struct
{
int num;
int score;
}student;
typedef struct NODE
{
struct NODE * link;
student stu;
}Node;
Node* createnode(student *s)//创建节点
{
Node* p;
p = MALLOC;
assert(p != NULL);//对内存申请是否成功断言
p->stu = *s;
p->link = NULL;
return p;
}
void freelink(Node* s)//释放内存
{
if (s == NULL)
return;
Node * p=s, * q;
while (p->link != NULL)
{ q = p->link;
p->link = q->link;
free(q);//释放第二个及之后的节点
}
free(s);//释放第一个节点
}
Node* createlink(int k)//创建链表
{
assert(k!=0);
Node* root, * past, * current; int i;
student s = { 0,0 };
scanf("%d %d", &s.num, &s.score);
root = createnode(&s);
past = root;
for (i = 0; i < k-1; i++)
{
scanf("%d %d", &s.num, &s.score);
current = createnode(&s);
past->link = current;
past = current;
}
return root;
}
int main()
{
Node* root;
root=createlink(10);
Node* p=root;int r=0,i=0;//r为实部,i为虚部
while (p!= NULL)
{
r+=p->stu.num;
i+=p->stu.score;
p=p->link;
}
printf("%d+%di",r,i);
freelink(root);
return 0;
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复