数据结构与算法


实验目的与要求

目的:

(1)理解线性表的顺序存储、链式存储等基础知识,并能应用于解决实际问题; 

(2)理解栈、队列的特点以及基本运算,并能应用于解决实际问题。

实验原理与内容

(1)线性表实验 共3题(第2-3周);

(2)栈实验 共1题(第3周);

(3)队列实验 共1题(第4周);

实验设备与软件环境

(1)硬件环境:笔记本电脑;

(2)软件环境:DEV/PTA;

实验过程与结果(可贴图)

1 递增有序顺序表的插入 (15 分)

1.题目

实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。

输入格式:

第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。

输出格式:

对每一组输入,在一行中输出插入X后的递增的顺序表。

输入样例:

在这里给出一组输入。例如:

5

1 3 5 7 9

6

输出样例:

在这里给出相应的输出。例如:

1,3,5,6,7,9,

2.代码

  1. 提交列表

      

  1. 解题思路

5.测试结果

2合并有序数组 (15 分)

1.题目

给定2个非降序序列,要求把他们合并成1个非降序序列。假设所有元素个数为N,要求算法的时间复杂度为O(N)。

输入格式:

输入有4行。 第1行是一个正整数m,表示第2行有m个整数,这些整数构成一个非降序序列,每个整数之间以空格隔开。第3行是一个正整数n,表示第4行有n个整数,这些整数也构成一个非降序序列,每个整数之间以空格隔开。

输出格式:

把第2行的m个整数和第4行的n个整数合并成一个非降序序列,输出这个整数序列。每个数之间隔1个空格。

2.代码

  1. 提交列表

      

  1. 解题思路

     

  1. 测试结果

3 两个有序链表序列的交集 (20 分)

1.题目

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

输入格式:

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

输出格式:

在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

2.代码

  1. 提交列表

       

  1. 解题思路

5.测试结果

4简单计算器 (25 分)

1.题目

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:

从 S 1  中弹出两个数字,顺序为 n 1​  和 n 2 ;

从 S 2  中弹出一个运算符 op;

执行计算 n 2​  op n 1 ;

将得到的结果压回 S 1 。

直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

2.代码

  1. 提交列表

      

  1. 解题思路

     

  1. 测试结果

5 银行业务队列简单模拟 (25 分)

1.题目

设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。

输入格式:

输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。

输出格式:

按业务处理完成的顺序输出顾客的编号。数字间以空格分隔,但最后一个编号后不能有多余的空格。

2.代码

  1. 提交列表

      

  1. 解题思路

5.测试结果

操作异常问题与解决方案

  7-2 合并有序数组 (15 分)

       操作问题:部分正确

       解决方案:不断修改,需要运用线性表。线性表初始化时遇到空间问题,查找教材、资料解决相应内容。

  7-2 银行业务队列简单模拟 (25 分)

操作问题:编译错误

解决方案:创建结构体保存顺序表结构,采用队列进行入队和出队。注意区分堆栈和队列删除和插入的区别。

实验总结

  线性表是由同一类型的数据元素构成的有序序列的线性结构。线性表中元素的个数称为线性表的长度;当一个线性表中没有元素时,称为空表;表的起始位置称表头,表的结束位置称表尾。线性表顺序存储结构的优点无需为表示表中元素之间的逻辑关系而增加额外的存储空间,可以快速地存取表中任一位置的元素;缺点插入删除操作需要移动大量元素,当线性表长度变化较大时,难以确定存储空间的容量

造成存储空间的碎片。在本次实验中,因自己对链表知识学习不到位,很多问题没有完全掌握,所以进行很困难且缓慢,需要不断地翻阅资料,在网上查找资料,询问同学才能艰难完成。所以自己也体会到,需要更好的熟悉掌握并运用所学知识,也需要更多的实践去掌握。

堆栈是先进后出的线性结构,删除和插入是在同一端进行的。队列是先进先出的线性结构,删除和插入不在同一端进行。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值