数据结构与算法实验一线性表
“数据结构与算法实验一线性表”相关的资料有哪些?“数据结构与算法实验一线性表”相关的范文有哪些?怎么写?下面是小编为您精心整理的“数据结构与算法实验一线性表”相关范文大全或资料大全,欢迎大家分享。
数据结构—线性表
第 2 章 线性表
课后习题讲解 1. 填空
⑴ 在顺序表中,等概率情况下,插入和删除一个元素平均需移动( )个元素,具体移动元素的个数与( )和( )有关。
【解答】表长的一半,表长,该元素在表中的位置
⑵ 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是( )。 【解答】108
【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108
⑶ 设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为( )。
【解答】p->next=(p->next)->next
⑷ 单链表中设置头结点的作用是( )。 【解答】为了运算方便
【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。
⑸ 非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足( )。 【解答】p->next=head 【分析】如图2-8所示。
⑹ 在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是( );删除开始结点的操作序列为( )。
【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->
数据结构与算法(线性表)练习题
三、写一个算法合并两个已排序的线性表。(用两种方法:数组表示的线性表(顺序表)和指针表示的线性表(链表)) 要求:1、定义线性表节点的结构,并定义节点的型和位置的型。 2、定义线性表的基本操作 3、在1,2的基础上,完成本题。 4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。
四、已知一个单向链表,试给出复制该链表的算法。
要求:1、定义线性表的节点的结构以及节点的型和位置的型。 2、定义线性表的基本操作
3、在1,2的基础上,完成本题。 4、在main函数中进行测试:先构建一个线性表,并定义一个空线性表,然后进行复制。
五、写出从一个带表头的单链表中删除其值等于给定值x的结点的算法函数: int delete(LIST &L, int x);如果x在该链表中,则删除对应结点,并返回其在链表中的位置(逻辑位置,第一个结点的逻辑位置为1),否则返回-1。 要求:1、定义线性表的节点的结构以及节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main函数中进行
数据结构实验一 线性表的基本操作
实验一 线性表的基本操作
一、实验目的
1、理解线形表的定义、特征和相关概念; 2、理解线形表的顺序存储结构; 3、掌握上机调试线性表的基本方法。 二、实验条件
1、PC机
2、软件Visual C++ 三、实验原理
线性表的顺序存储结构是用一组地址连续的存储单元依次存放线性表中的元素。其实现手段是数组类型。由于内存中的元素存放顺序与逻辑上的顺序相同,所以元素的地址就体现了逻辑关系,即物理相邻=逻辑相邻;在插入或者删除某一个元素时,其后的所有元素也要做相应的后移或者前移,即有可能要移动大量元素。 四、实验内容
1、利用两个线形表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A∪B,用顺序表实现;
2、对给定的两个集合能够进行合并,并给出合并结果; 五、算法分析
void union(List &La, List Lb){ La_len = ListLength(La); Lb_len = ListLength(Lb); for (i=1; i<=Lb_len; i++){ GetElem(Lb,i, e);
If(!LocateElem(La,e,equal)) ListInsert(La, ++L
数据结构--线性表及其应用
实验一 线性表及其应用
一、实验目的
1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。 2.掌握线性表的顺序存储结构的定义及C语言实现。
3.掌握线性表的链式存储结构——单链表的定义及C语言实现。 4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容
1.顺序线性表的建立、插入及删除。 2.链式线性表的建立、插入及删除。 三、实验步骤
1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。
3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 四、实现提示
1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。
在此,我们利用C语言的结构体类型定义顺序表: #define MAXSIZE 1024
typedef int elemtype; /* 线性表中存放整型元素 */ typedef
约瑟夫问题 - 线性表部分 数据结构实验报告
北京邮电大学信息与通信工程学院
2010级数据结构实验报告
实验名称: 实验一——线性表(约瑟夫问题) 学生姓名: 在这我就不写了 班 级: ** 班内序号: ** 学 号:日 期:
**
2010年11月4日第1页
北京邮电大学信息与通信工程学院
1.实验要求
一、实验目的
通过实现约瑟夫问题,掌握如下内容:
1、 熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法; 2、 学习指针、模板类、异常处理的使用; 3、 掌握线性表的操作实现方法;
4、 培养使用线性表解决实际问题的能力。 二、实验内容
利用循环链表实现约瑟夫问题的求解。
约瑟夫问题如下:有n个人(n>=1)围坐在一个圆桌周围,把这n个人依次编号为1,…,n。从编号是1的人开始报数,顺时针数到m的那个人出列,他的下一个然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此反复直到所有的人全部出列。请问最后一个出列的人的编号。
2. 程序分析
对于这个程序来说,首先要确定构造链表时所用的插入方法。当数到m时一个人就出列,也即删除这个节点,同时建立这个节点的前节点与后节点的联系。由于是循环计数,所以才采用循环列表这个线性表方式
数据结构实验指导书——线性表的操作
实验1 线性表的基本操作
一、实验目的
(1) 掌握线性表的逻辑特征;
(2) 掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算; (3) 熟练掌握线性表的链式存储结构定义及基本操作; (4) 理解循环链表和双链表的特点和基本运算;
(5 )加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力; 二、实验内容
1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。
要求各个操作均以函数的形式实现,在主函数中调用各个函数实现以下操作:
(1)从键盘上依次输入21、18、30、75、42、56,创建顺序表,并输出顺序表中的各元素值。
(2)分别在单链表的第3个位置插入67,给出插入成功或失败的信息,并输出此时顺序表中的各元素值。
(3)删除顺序表中的第6个数据元素,给出删除成功或失败的信息,并输出此时顺序表中的各元素值。
(4)查找顺序表中是否有75这个元素,如果有返回该元素在顺序表中的位序。
2、创建有若干个元素(可以是整型数值)的单链表,实现对单链表的初始化,对已建立的顺序表插入操作、删除操作、
数据结构实验指导书 - 线性表的操作
实验1 线性表的基本操作
一、实验目的
(1) 掌握线性表的逻辑特征;
(2) 掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算; (3) 熟练掌握线性表的链式存储结构定义及基本操作; (4) 理解循环链表和双链表的特点和基本运算;
(5 )加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实际问题的编程能力; 二、实验内容
1、创建有若干个元素(可以是整型数值)的顺序表,实现对顺序表的初始化,对已建立的顺序表插入操作、删除操作、遍历输出顺序表。
要求各个操作均以函数的形式实现,在主函数中调用各个函数实现以下操作:
(1)从键盘上依次输入21、18、30、75、42、56,创建顺序表,并输出顺序表中的各元素值。
(2)分别在单链表的第3个位置插入67,给出插入成功或失败的信息,并输出此时顺序表中的各元素值。
(3)删除顺序表中的第6个数据元素,给出删除成功或失败的信息,并输出此时顺序表中的各元素值。
(4)查找顺序表中是否有75这个元素,如果有返回该元素在顺序表中的位序。
2、创建有若干个元素(可以是整型数值)的单链表,实现对单链表的初始化,对已建立的顺序表插入操作、删除操作、
2016数据结构作业1-线性表
数据结构作业2016
作业要求:
? 独立完成,上机调试通过后上交
(提交至dlutdswork@163.com)
? 请将本次作业源程序标好题号,压缩成一个压缩文件提交(邮件主题和压
缩文件名格式为: 电1401班***第一次作业) ? 本次作业提交截至日期:3月28日(第五周周一)前
作业1. 线性表
编程作业:
1. 将顺序表逆置,要求用最少的附加空间。 2. 从键盘读入n个整数(升序),请编写算法实现: (1) CreateList():建立带表头结点的单链表; (2) PrintList():显示单链表,(形如:H->10->20->30->40); (3) InsertList():在有序单链表中插入元素x; (4) ReverseList():单链表就地逆置;
(5) DelList():在有序单链表中删除所有值大于mink且小于maxk的元素。
选作:使用文本菜单完成功能选择及执行。
感兴趣的同学可以试试下面的题: 约瑟夫环问题
问题描述:设有编号为1,2,3……n的n个人顺时针方向围坐一圈,每人有一密码(正整数)。开始时给出一报数上限m,从编号为1的人开始报数,报m的人出列;以后将出列者的密码作为新的m,从顺时针方
2016数据结构作业1-线性表
数据结构作业2016
作业要求:
? 独立完成,上机调试通过后上交
(提交至dlutdswork@163.com)
? 请将本次作业源程序标好题号,压缩成一个压缩文件提交(邮件主题和压
缩文件名格式为: 电1401班***第一次作业) ? 本次作业提交截至日期:3月28日(第五周周一)前
作业1. 线性表
编程作业:
1. 将顺序表逆置,要求用最少的附加空间。 2. 从键盘读入n个整数(升序),请编写算法实现: (1) CreateList():建立带表头结点的单链表; (2) PrintList():显示单链表,(形如:H->10->20->30->40); (3) InsertList():在有序单链表中插入元素x; (4) ReverseList():单链表就地逆置;
(5) DelList():在有序单链表中删除所有值大于mink且小于maxk的元素。
选作:使用文本菜单完成功能选择及执行。
感兴趣的同学可以试试下面的题: 约瑟夫环问题
问题描述:设有编号为1,2,3……n的n个人顺时针方向围坐一圈,每人有一密码(正整数)。开始时给出一报数上限m,从编号为1的人开始报数,报m的人出列;以后将出列者的密码作为新的m,从顺时针方
数据结构实验报告1线性表的顺序存储结构
数据结构实验报告(1) 学院: 专业: 班级: 姓名 实验时间 实验项目名称 实1. 熟练掌握线性表的基本操作在顺序存储和链式存储上的实现; 验2. 以线性表的各种操作(建立、插入、删除等)的实现为重点; 目3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 的 实验 条件 实1. 根据实验内容编程,上机调试、得出正确的运行程序。 验原理 实 验 2011-10-28 学号 指导教师 线性表的顺序存储结构 实验组 成绩 运行Visual c++的微机一台 2. 编译运行程序,观察运行情况和输出结果。 3. 写出实验报告(包括源程序和运行结果 #include