学号: 姓名: 时间:
一、目的
1.做实验的目的
加深对线性表的理解,学会定义线性表的存储结构,掌握线性表的基本操作。
2.撰写实验报告的目的
对本次实验情况进行总结,加强对实验内容的理解,对实验过程有一个系统的认识,从中获得本次试验的经验,并对实验结果进行适当的分析,加深对栈和队列的理解和认识。
二、内容
1.说明实验次数及实验内容
本次实验用一次实验课时完成
实验内容:
节点定义:
typedef struct node{
int idx;
int age;
struct node *next;
}Node,*List;
本次实验的对象的存储内容包括ID和AGE,所以定义了如上的结构体,idx用于存储ID号,age用于存储年龄,next用于形成链式结构,Node定义了该类型的一个节点,List定义了该类型的一个链表。
(1)、编写函数CreateList()和PrintList(),从给定数组创建链表,打印链表。
…… …… 余下全文
数据结构实验报告
姓名:方钢 学号: 20105567 专业: 电子商务 班 级:10-1班
指导教师:张逸仙 实验时间: 实验地点: 新区实验楼4楼
(实验题目)线性表实验
1. 实验内容和要求
1.1实验要求
① 顺序表结构定义,算法的实现以库文件方式实现,库文件名统一为
seqList.h;
② 实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件
工程要求;
③ 程序有适当的注释。
1.2实验内容
<1>求顺序表中第i个元素(函数),若不存在,报错。
<2>在第i个结点前插入值为x的结点。
<3>删除顺序表中第i个元素结点。
<4>在一个递增有序的顺序表L中插入一个值为x的元素,并保持其递增有序特性。
<5>将顺序表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),分别放入新的顺序表中,然后原表和新表元素同时输出到屏幕上,以便对照求解结果。
<6>求两个递增有序顺序表L1和L2中的公共元素,放入新的顺序表L3中。
2. 实验目的
1理解线性表的顺序存储结构。 ○
…… …… 余下全文
实 验 报 告
课程名称____数据结构上机实验__________
实验项目______线性表的应用 ____________
实验仪器________PC机___________________
系 别_____电子信息与通信学院___
专 业________ ___
班级/学号______ __
学生姓名______ ___________
…… …… 余下全文
数 据 结 构
实验报告
实验名称:___线性表_________________________
学生姓名:张鑫磊____________________________
班 级:2013211107____________________________
班内序号:01____________________________
学 号:2013210182____________________________
日 期:2015.1.6____________________________
(一)实验目的和要求
实验目的:熟练掌握线性表的基本操作在顺序存储结构上的实现。
实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。
(二)实验主要内容
1. 建立n个元素的顺序表SqList,实现顺序表的基本操作;
2. 在SqList的元素i之后插入一个元素,实现顺序表插入的基本操作;
3. 在sqList中删除指定位置i上的元素,实现顺序表删除的操作。
4.
(三)仪器设备
PC机,Windows XP操作平台,Visual C++
(四)实验原理
顺序表操作:定义一个顺序表类,该类包括顺序表的存储空间、存储容量和长度,以及构造、插入、删除、遍历等操作的方法
(五)实验步骤与调试分析:
顺序表操作:先构造有四个数据的顺序表,在第4个位置插入9,再读取并删除第3个元素。
(六)源程序:
#include<iostream>
using namespace std;
const int LIST_INIT_SIZE=10; //顺序表初始长度
const int LISTINCREMENT=5; //顺序表长度增值
class SqList
{
int *L; //定义存储空间起始地址
int length; //顺序表当前长度
int listsize; //顺序表当前存储容量
bool flag; //设立标志值记录操作成败
public:
SqList(int v1,int v2,int v3,int v4); //构造函数构造并初始化顺序表
void ListInsert(int i,int e); //实现将e插入到顺序表中第i个位置
void ListDelete(int i,int &e); //实现删除顺序表第i个元素
void ListVisit(); //实现顺序表的遍历
};
SqList::SqList(int v1,int v2,int v3,int v4) //构造并初始化顺序表
{
L=new int[LIST_INIT_SIZE];
if(!L) //分配失败
{
flag=false;
cout<<"ERROR"<<endl;
}
else //分配成功,进行初始化
{
*L=v1;
*(L+1)=v2;
*(L+2)=v3;
*(L+3)=v4;
length=4;
listsize=LIST_INIT_SIZE;
flag=true;
}
}
void SqList::ListInsert(int i,int e) //插入元素
{
int *p,*q;
int t;
if(i<1||i>length+1) cout<<"ERROR"<<endl; //插入位置错误
else
{
if(length==listsize) //空间不足,增加分配
{
p=new int[listsize+LISTINCREMENT];
if(!p) cout<<"ERROR"<<endl; //分配失败
else //分配成功,复制顺序表
{
for(t=0;t<length;t++)
*(p+t)=*(L+t);
q=L;L=p;p=q;
delete q;
listsize+=LISTINCREMENT;
}
}
for(t=length;t>=i;t--)
*(L+length)=*(L+length-1);
*(L+i-1)=e;
length++; //插入成功,表长加1
}
}
void SqList::ListDelete(int i,int &e)
{
if(i<1||i>length) cout<<"ERROR"<<endl; //删除位置错误
else
{
e=*(L+i-1);
while(i<length)
{
*(L+i-1)=*(L+i);
i++;
}
length--; //删除成功表长减1
}
}
void SqList::ListVisit() //遍历
{
int i;
for(i=0;i<length;i++)
cout<<" "<<*(L+i);
cout<<endl;
}
int main()
{
int e=0;
SqList list(2,3,4,5);
list.ListVisit();
list.ListInsert(4,9);
list.ListVisit();
list.ListDelete(3,e);
list.ListVisit();
cout<<"e="<<e<<endl;
return 0;
}
…… …… 余下全文