数据结构与算法实验务书2013-S2.docVIP

  • 9
  • 0
  • 约2.63千字
  • 约 5页
  • 2016-09-20 发布于贵州
  • 举报
数据结构与算法实验务书2013-S2

实验2 线性表 实验室: DJ2-106 实验日期: 节次/周次:第1节/第4周周3 班 级:11计科2班 学号姓名:朱昱佩 一、开发环境及工具: 软件环境:Windows 7旗舰版 C++6.0 硬件环境:600G 二、你的选题: (填写自己所选的题目的要求,可以从实验书和习题集中选择,至少完成一个单链表的选题。建议在顺序表、单链表、双向链表中各选一个任务)。推荐选题: 题1:约瑟夫环。当编号 为1,2,……n 的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),先任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始依次报数,报到m时停止,第m 个人出列(即删除),将其密码作为新的m值,从刚才出列的人的顺时针方向的下一个开始重新从1报数,重复刚才的操作直到全部的都出列,试设计一个程序求出列顺序。 提示:可以将存储结构设置为单向循环链表,每个结点都有自身的序号和所持的密码二个数据项。人数n和初始密码可由用户键盘输入。链表中代表每个人的结点中的密码可由随机函数生成,也可以由键盘输入。 如,n=7,m=20,链表如下: 则出列顺序为:6,1,4,7,2,3,5 题 2 :一元稀疏多项式计算器。可以用单链表作为存储结构,建立一元多项式,结点按各项指数的降序排列,能够输出多项式,输出时,先输出总项数,再输出各项系数、指数,可以生成a和b下个多项式,并进行相加、相减,输出计算后的结果。 提示:参考课本2.4节或习题集实习1线性表及应用Page81(1.5一元稀疏多项式计算器) 题 3 :带头结点的单链表L,其中有n 个元素非递减有序排列,将元素X插入到链表中合适的位置。 提示:先创建链表,其中的元素值可由随机函数按阶段生成或键盘输入,先打印初始链表数据,然后插入新结点,再打印结果链表。 插入前: 插入后: 题4:完成习题集中的算法并编程实现:Page17的2.19 题5:完成习题集中的算法并编程实现:Page18的2.22 题6:完成习题集中的算法并编程实现:Page18的2.29 题6:完成习题集中的算法并编程实现:Page19的2.33 题7:习题集实习1线性表及应用Page80的1.4长整数四则运算。设计一个实现任意长整数进行加法运算的演示程序。(存储结构为双向循环链表)(扩展的可选功能:实现四则运算等其它运算) 三、实验目的:(请自己填写,不少于50字) 通过实验掌握……、熟练……、了解…… 掌握顺序表与链表的区别,熟练了链式存储结构的数据类型的定义方法, 四、存储结构说明和定义: 五、主要算法: 给出程序的概要设计或流程图,给出核心函数的算法,给出每个子函数的函数头。#includeiostream #includecstdio #includecstring using namespace std; #define MAXN struct LinkList { int num; LinkList * next; } * head; void insert(LinkList * p1) { LinkList *p2=head; while( p2-next !=NULL ){ if(p2-next-num = p1-num) break; p2=p2-next; } p1-next=p2-next; p2-next=p1; } void output() { LinkList *p; p=head-next; while(p!=NULL){ printf(%d\t,p-num); p=p-next; } printf(\n); } int main() { head = new LinkList; // head.init(); head-next=NULL; head-num=MAXN; int n; while(1){ scanf(%d,n); LinkList * now; now=new LinkList; now-num=n; now-next=NULL; insert(now); output(); } return 0; } 六、程序运行结果测试:

文档评论(0)

1亿VIP精品文档

相关文档