没有合适的资源?快使用搜索试试~ 我知道了~
计算机基础算法实验报告.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 124 浏览量
2021-10-11
17:13:16
上传
评论 1
收藏 17KB PDF 举报
温馨提示
试读
13页
计算机技术
资源推荐
资源详情
资源评论
计算机基础算法实验报告
班级:
学号:
姓名:
指导教师:
完成日期:
2
实验一 实现两个整数相加
1. 实验任务
实现两个长整数相加:要求用链表(单链表或双向链表)实现任意位
数的整数相加。
2. 设计思想
用单链表实现两个任意位整型相加,建立三个动态链表,两个分别用
来存入两个加数,第三个链表用来存入和。考虑到进位以及算术加法
习惯,采用逆序插入节点,先存高位再存低位数,头指针指向最后插
入的节点。进行相加后存入第三个链表,最后将结果输出。
3.主要变量说明
data 链表结点的数据域
*next 链表结点的指针
node 单链表类型
*list 单链表类型指针
head 指向链表的头指针
l3 指向第三个链表的头指针
j 进位标志
4.算法描述
首先定义单链表的结构体类型,然后输入两个数,调用创建链表函数创
建两个单链表将输入的数分别依次逆序存入,高位存入第一个结点,低位
存入之后的结点,最后的结点存个位,并不断循环始终使头指针指向新插
入的结点。然后调用相加函数,并动态创建第三个链表将结果仍逆序存入
第三个链表中。最后调用输出函数将结果输出。
5.程序结构
List creat()
操作结果:构造一个动态链表
list add(list l1,list l2)
初始条件:链表 l1,l2 已存在
操作结果:将两个链表的数据依次对应相加,并将结果倒叙存入
链表 l3
void out(list l)
初始条件:链表已存在
操作结果:依次输出链表中的数据
3
主函数:
void main()
{
list l1,l2,l3;
printf(" 请输入第一个整数,末尾输入 -1 表结束 : ");
l1=creat();
out(l1);
printf(" 请输入第二个整数,末尾输入 -1 表结束 : ");
l2=creat();
out(l2);
printf (”相加结果为 : ”);
l3=add(l1,l2);
out(l3);
}
6.运行结果
请输入第一个整数,末尾输入 -1 表结束: 1 2 3 4 -1
4321
请输入第二个整数,末尾输入 -1 表结束: 7 8 9 -1
987
相加结果为: 2023
7.心得体会
通过本次编写程序, 我对单链表有了更深的理解, 由于没有使用双向链表,
就采取了逆向插入结点,这使我对逆向插入有更深的理解。正向插入节点
需要两个指针来完成插入结点,头指针位置不动,而逆向插入头指针永远
指向新插入的结点,这就省去了一个指针,用头指针代替。
8.程序清单
#include<stdio.h>
#include<malloc.h>
#define len sizeof(node)
typedef struct node
{
int data;
struct node *next;
}node,*list;
剩余12页未读,继续阅读
资源评论
nidezlk
- 粉丝: 1
- 资源: 11万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功