c语言链表复数,[蓝桥杯][算法提高VIP]复数求和-链表初学者看过来(C语言代码)...

本文档展示了如何使用C语言实现链表数据结构,包括创建链表(尾插法)、获取链表中第i个元素的实部和虚部、以及释放整个链表的内存。通过示例代码,理解链表操作的基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include/*定义结构类型和创建结点*/

typedef struct Node

{

int real;

int unreal;

struct Node* next;

}* LinkList, Node;

/*

1、创建链表

2、获得元素

3、删除链表

*/

void Creat_L(LinkList head, int n);

void Get_Elem(LinkList head, int i, int num[2]);

void Delete_ALL(LinkList head);

int main(int argc, char* argv[])

{

int n, num[2] = { 0 }, sum_r, sum_u;

LinkList head;

sum_r = sum_u = 0;

scanf_s("%d", &n);

/*创建链表*/

head = (LinkList)malloc(sizeof(Node));//创建头结点

Creat_L(head, n);

for (int i = 0; i < n; i++)

{

/*每次循环将数据域读到num中*/

Get_Elem(head, i+1, num);

/*实部相加,虚部相加*/

sum_r += num[0];

sum_u += num[1];

}

printf("%d+%di\n", sum_r, sum_u);

/*释放整个链表*/

Delete_ALL(head);

return 0;

}

```

创建链表函数——有头结点,采用尾插法创建

```c

/*创建链表,尾插法

1、定义指针r和p,r表示末尾结点p是新结点

2、令r等于头结点

3、创建新结点

4、让r的指针域指向新结点,再让指针后移

*/

void Creat_L(LinkList head, int n)

{

LinkList r, p;

r = head;

for (int i = 0; i < n; i++)

{

p = (LinkList)malloc(sizeof(Node));

scanf_s("%d %d", &p->real, &p->unreal);

r->next = p;

r = p;

}

r->next = NULL;

}

```

取第i个结点上的数据

```c

/*取第i个结点上的元素

1、定义指针p和循环变量j

2、定位到第i个结点的位置

3、如果p不为空则为找到了,将元素赋给num

*/

void Get_Elem(LinkList head, int i, int num[2])

{

LinkList p;

int j = 1;

p = head -> next;//等于首结点

/*得到的p为第i个结点*/

while (p && j < i)

{

p = p->next;

j++;

}

if (p != NULL)

{

num[0] = p->real;

num[1] = p->unreal;

}

}

```

释放整个链表

```c

/*删除整个链表*/

void Delete_ALL(LinkList head)

{

LinkList p, q;

p = head->next;

while (p)

{

/*记录下一个结点*/

q = p->next;

free(p);

p = q;

}

/*将链表置为空*/

head->next = NULL;

}

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值