实验一—链表及栈的应用.pdfVIP

  • 30
  • 0
  • 约2.25万字
  • 约 21页
  • 2017-07-29 发布于浙江
  • 举报
实验一—链表及栈的应用

【实验一】链表及栈的应用 一、实验目的 1、熟练掌握线性表、栈和队列的基本操作在两种存储结构上的实现。 2 、会用线性链表、栈和队列解决简单的实际问题。 二、实验要求 1、复习线性表(顺序表、链表)、栈(顺序存储、链式存储)、队列(顺序 存储、链式存储)的特点和基本操作;充分了解实验内容,进行问题分析,复习 相关知识并完成算法设计,初步完成程序设计,为实验作好充分的准备。 2 、注意栈满和栈空的条件; 3、重点掌握在顺序队上和链队上实现队列的基本运算算法,注意循环队队 满和队空的条件; 4 、按时按要求完成实验报告。要求报告包括:实验步骤、算法思路、分析、 源程序、运行结果截图、实验小结等内容 三、实验题目 1 、《数据结构》教材(红色封面)P53-56“数值转换问题” ;(必做) 2 、《数据结构》教材(红色封面)P56-61“ 中缀表达式求值” ;(必做); 3 、《数据结构》教材(红色封面)P71-74“舞伴问题” (必做) 以下四题可任选两题做。 4 、编写一个程序,实现顺序栈的各类基本运算,并在此基础上设计一个主 程序完成如下功能: (1)初始化栈s; (2 )判断栈s 是否非空; (3 )以此进栈元素a,b,c,d,e; (4 )判断栈s 是否非空; (5 )输出栈长度; (6 )输出从栈顶到栈底元素; (7 )输出出栈序列; (8 )判断栈s 是否非空; (9 )释放栈。 5 、编写一个程序,实现顺序环形队列的各类基本运算,并在此基础上设 计一个主程序完成如下功能: (1)初始化队列q ; (2 )判断队列q 是否为空; (3 )依次进队元素a,b,c ; 1 (4 )出队一个元素,输出该元素; (5 )输出队列q 的元素个数; (6 )依次进队列元素d,e,f ; (7 )输出队列q 的元素个数; (8 )输出出队序列; (9 )释放队列。 6、约瑟夫环问题。 约瑟夫问题的一种描述是:编号为1,2 ,……,n 点的n 个人按顺时针方向 围坐一个圈,每人持有一个密码。一开始选一个正整数作为报数上限值m ,从第 一个人开始从顺时针方向自1 开始报数,报到m 时停止。报到m 的人出列,将 他的密码作为新的m 值,从他在顺时针方向上的下一个人开始从新从 1 报数, 如此下去,直达所有人出列。 基本要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各 人的编号。 测试数据:m 的初始值为20 ;n=7 ,7 个人的密码依次是3,1,7,2 ,4 ,8, 4 ,首先m 的值为6 (正确的出列顺序为6,1,4 ,7,2 ,3,5 ) 提示: 程序设计的基本思想,原理和算法描述: 采用结构体定义单链表,格式为: struct Lnode {int number; int password; struct Lnode *next; }Lnode,*p,*q,*head; 其中 number 是人的排列序号,password 是各人所持有的密码值,next 是节点指 针。 Lnode 是节点变量,p、q 是节点,head 是头指针。 程序的代码:定义变量n,i,m,j 输入人的数量n If n=0 或n30 重新输入n 值 当0in 时 建立单链表

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档