《数据结构》课程实验报告
注:空间不够,可以增加页码。
…… …… 余下全文
选课时间段: 周四6、7、8、9 序 号:
实验报告
课程名称: 数据结构
实验名称: 顺序表的实现
指导教师:
学生姓名:
学生学号:
实验日期: 20xx年4月11日
1
一、实验目的
1、 熟悉实验环境
2、 理解顺序表的基本操作
3、 了解顺序表的建立和输出
4、 掌握顺序表的插入、删除、合并和归并等实现方法
二、实验内容
三、实验步骤
1.需求分析
本演示程序用C语言编写,完成顺序表的生成,任意位置的插入、删除,以及确定某一元素在顺序表中的位置。
① 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数。
② 输出的形式:在所有三种操作中都显示操作是否正确以及操作后顺序表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
③ 程序所能达到的功能:完成顺序表的生成(通过插入操作)、插入、删除、查找操作。
④ 测试数据:
A. 插入操作中依次输入11,12,13,14,15,16,生成一个顺序表
B. 查找操作中依次输入12,15,22返回这3个元素在顺序表中的位置
C. 删除操作中依次输入2,5,删除位于2和5的元素
2.概要设计
1)为了实现上述程序功能,需要定义顺序表的抽象数据类型: ADT LinkList { 数据对象:D={ai|ai∈IntegerSet,i=0,1,2,?,n,n≥0} 数据关系:R={<ai,ai+1>|ai,ai+1 ∈D} 基本操作: InitLinkList(&L) 操作结果:构造一个空的顺序表L. InsLinkList(&L,pos,e) 初始条件:顺序表L已存在 2
…… …… 余下全文
一、 实验目的
二、 实验内容和要求
三、 源代码
1) 顺序表的代码
2) 单链表的代码
四、 测试结果
1) 顺序表的测试结果
2) 单链表的测试结果
五、心得体会
实验一 线性表的基本操作及其应用
一、实验目的
1、帮助读者复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
题目一:顺序表的基本操作
[问题描述]
实现顺序表的建立、求长度,取元素、修改元素、插入、删除等顺序表的基本操作。
[基本要求]
(1)依次从键盘读入数据,建立带头结点的顺序表;
(2)输出顺序表中的数据元素
(3)求顺序表的长度;
(4)根据指定条件能够取元素和修改元素;
…… …… 余下全文
数据结构实验报告
1.实验目的(结出本次实验所涉及并要求掌握的知识点)
1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
2.实验内容(结出实验内容具体描述)
1. 建立一个含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
2. 往该顺序表中第i位置插入一个值为x的数据元素。
3. 从该顺序表中第j位置删除一个数据元素,由y返回。
4. 从该顺序表中查找一个值为e的数据元素,若找到则返回该数据元素的位置,否则返回“没有找到”。
3.算法描述及实验步骤(用适当的形式表达算法设计思想与算法实现步骤)
1.编写头文件。定义数据类型。
2.编写主函数。
4.调试过程及运行结果(详细记录在调试过程中出现的问题及解决方法。记录实验执行的结果)
5. 总结(对实验结果进行分析,问题回答,实验心得体会及改进意见)
存储地址必须为相连的地址
6.附录(程序源代码等)
#include <stdio.h>
#include <stdlib.h>
typedef struct k{
int d;
struct k *n;
}node;
void printlist(node *h)
{
node *p;
…… …… 余下全文
实验1 顺序表的操作
一、实验要求
1.输入一组整型元素序列,建立顺序表。
2.实现该顺序表的遍历。
3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。
4.判断该顺序表中元素是否对称,对称返回1,否则返回0。
5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
6.* 输入整型元素序列利用有序表插入算法建立一个有序表。
7.* 利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。
8.编写一个主函数,调试上述算法。
二、源代码
#include"stdio.h"
#include"stdlib.h"
#define ElemType int//int类型宏定义
#define MAXSIZE 100
//顺序结构
typedef struct
{
ElemType elem[MAXSIZE]; //元素数组
int length; //当前表长
}SqList;
//建立顺序表
void BuildList(SqList &L)
{
int n;
printf("请输入建立顺序表的大小。n=");
scanf("%d",&n);
L.length=n;
printf("\n开始建立顺序表...\n");
for(int i=0;i<L.length;i++)//循环建立顺序表
{
printf("\n请输入第%d个元素:",i+1);
scanf("%d",&L.elem[i]);
…… …… 余下全文
一、 设计人员相关信息
1. 设计者姓名、学号和班号:12地信
2. 设计日期:2014.
3. 上机环境:VC++6.0
二、 程序设计相关信息
1. 实验题目:编写一个程序,实现顺序表的各种基本运算(假设顺序表元素为char),并在此基础上设计一个程序,完成如下功能:
(1)初始化顺序表L;
(2)依次采用尾插法插入a,b,c,d,e元素
(3)输出顺序表L:
(4)输出顺序表L长度
(5)判断顺序表L是否为空
(6)输出顺序表L的第3个元素
(7)输出元素a的位置
(8)在第4个元素位置上插入f元素
(9)输出顺序表L:
(10)删除L的第3个元素
(11)输出顺序表L:
(12)释放顺序表L
2. 实验项目组成:线性表的初始化, 销毁, 判断线性表是否为空, 求线性表长度, 输出线性表, 求线性表中某个数据元素值, 插入数据元素, 删除数据元素。
3. 实验项目的程序结构(程序中的函数调用关系图):
4. 实验项目包含的各个文件中的函数的功能描述:
CreateList:建立顺序表。其方法是将给定的含有n个元素的数组的每个元素依次放入到顺序表中,并将n赋给顺序表的长度域。
InitList:初始化线性表。该运算的结果是构造一个空的线性表L。实际上只需分配线性表的存储空间并将length域设置为0即可。
DetroyList:释放线性表L占用的内存空间。
int ListEmpty:判断线性表是否为空表。判断成员length是否为0,就可以判断线性表是否为空。
int ListLength:求线性表的程度。返回成员length即可
void DispList:输出线性表。当先线性表L不为空的时候,顺序输出每个元素的值。 int GetElem:求线性表中某个数据元素值。返回L中第i个位置的元素值。
LocateElem:按元素值查找。该运算按顺序查找第一个值域和e相等的元素的逻辑位序。 ListInsert:插入数据元素。将第i个位置以后的数据依次后移一位,然后将e插入位置i。
…… …… 余下全文
一 .实验内容
1.Description
建立一个顺序表,然后在已建好的顺序表上实现顺序表插入和删除等基本操作。最后输出最终结果。
要求:Time Limit:1000MS Memory Limit:65536K
2.eg.Input
有多组测试数据,每组数据由三部分组成。第一部分包含两个整数n(n<=1000)和m(m<=1000),n表示第二部分包含n个整数,m表示第三部分包含m个操作。操作项的格式有:insert i x和delete i。insert i x 表示在第i个位置插入数字x,delete i表示删除第i个元素。当n和m同时为0时结束。
Output
对于每组数据,按顺序输出顺序表中的元素。输出结果占一行。
Sample Input
4 5
2 3 4 5
insert 2 6
delete 4
insert 2 9
insert 1 100
delete 4
Sample Output
100 2 9 3 5
二.实验源程序
#include <stdio.h>
#include <stdlib.h>
# define M 100
# define N 10
typedef struct {
int *elem;
int length;
int size;
}SqList;
void InitList(SqList &L,int n){
L.elem = (int *)malloc(M * sizeof(int));
L.length = n; //空间长度为n
…… …… 余下全文
计算机科学与技术系
实 验 报 告
专业名称 计算机科学与技术 课程名称 数据结构与算法 项目名称 顺序表查找
班 级
学 号
姓 名
实验日期
格 式 要 求
实验报告注意格式规范,要求在word中编写,文中不要有空行,统一使用A4页面。
页边距:上2.5cm、下2cm、左2.5cm、右2cm。
标题:宋体、四号字、加粗、1.5倍行距。
正文:宋体、小四号字、1.2倍行距。
一、实验目的与要求:
(一)实验目的
1、掌握线性表中元素的前驱、后续的概念。
2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。
3、掌握线性表三种查找的算法。
4、对线性表相应算法的时间复杂度进行分析。
5、理解顺序表数据结构的特点(优缺点)。
(二)实验要求
1.将实验中所要求的每个功能用一个函数实现。
2.每个输入前要有输入提示,每个输出数据都要求有内容说明(如:280和100的和是:380。)。
3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
二、实验方法:(代码)
include "stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define INIT_SIZE 5 /*初始分配的顺序表长度*/
#define INCREM 5 /*溢出时,顺序表长度的增量*/
typedef int ElemType; /*定义表元素的类型*/
typedef struct Sqlist{
ElemType *slist; /*存储空间的基地址*/ int length; /*顺序表的当前长度*/ int listsize; /*当前分配的存储空间*/
…… …… 余下全文