数据结构实验顺序表(精选4篇)
数据结构实验顺序表 篇1
实 验 报 告
实验课程
数据结构
实验项目
实验
二、顺序表的基本操作
实验地点
指导教师
班
级
学生姓名
学
号
教师评分
日
期
浙江传媒学院实验报告
一、实验目的
1、掌握线性表的顺序存储结构;
2、掌握顺序表及其基本操作的实现;
3、掌握数据结构及算法的程序实现的基本方法。
二、实验设备
1.安装有WinXP的PC一台;
2.安装有软件VC6或者Visual Studio2005。
三、实验内容
1、建立含有若干个元素的顺序表;
2、对已建立的顺序表实现插入、删除、查找等基本操作;
3、对两个顺序表进行合并操作。
四、实验步骤
1.根据下面的表格,定义一个表示数据元素的结构体。
2.根据教材的内容,定义顺序表的结构体。
3.根据教材的内容,编写代码,实现顺序表的下列函数。
浙江传媒学院实验报告
4.定义数据元素输入函数如下。请完善代码。
5.定义顺序表的创建函数如下,请完善代码。
6.定义数据元素的输出函数如下,请完善代码。
7.定义main函数,要求完成如下功能。
A.定义三个顺序表分别为list1, list2,list3; B.初始化两个顺序表list1和list2;C.输入顺序表list1;
浙江传媒学院实验报告
D.输入list2;E.合并list1和list2到list3中; F.删除list3中的
档案表顺序 篇2
第一本:1、2、3、高考报名表 体检表 加分
第二本4、5、6、7、8、9、高中毕业生登记表 高一高二学年评语表 高中学业水平成绩单复印件 体质测试 家庭情况调查表 高中毕业生鉴定表
10、高一高二社会实践表
11、高三社会实践表(劳动技术)填好后上交一块盖教育局的章
12、健康标准表
13、军训表
14、综合素质评价表
15、团员档案(团员)
其中,少数民族的,二级运动员,市三好 市级优秀干部等加分的表件原件;
会议座次表发言顺序 篇3
一、小型会议。即参加者较少、规模不大的会议。不设立专用的主席台。小型会议的排座,有三种形式:
1、自由择座。就是不排定固定的具体座次,而由全体与会者完全自由地选择座位就座。
2、面门设座。一般以面对会议室正门的是会议主席座位。其他的与会者在其两侧自左而右地依次就座。
3、依景设座。所谓依景设座,是指会议主席的具体位置,不必面对会议室正门,而是应当背依会议室之内的主要景致所在,如字画、讲台等。其他与会者的排座,则略同于前者。
二、大型会议,一般是指与会者多、规模较大的会议。大型会议在会场上要分设主席台和群众席。主席台要认真排座,群众席座次可排可不排。主席台排座。大型会场的主席台,一般面对会场主入口,面对群众席。主席台成员的桌上,要放置正反两面的桌签。
主席台排座,具体又分为主席团排座、主持人座席、发言者席位等三个问题。
1、主席团排座。主席团,是指在主席台上正式就座的全体人员。国内目前排定主席团位次有三个基本规则:一是前排高于后排,二是中央高于两侧,三是左侧高于右侧。
2、主持人座席。会议主持人(即大会主席)的具体位置在:一是居于前排正中央;二是居于前排的两侧;三是按其具体身份排座,但不应该就座在后排。
3、发言者席位。发言者席位,又叫做发言席。在正式会议上,发言者发言的时候不宜座在原处。发言席的常规位置有二:一是主席团的正前方,二是主席台的右前方。
4、群众席排座。在大型会议上,主席台下的一切座席都是群众席。群众席的排座方式有二。
1)自由式择座。即不进行统一安排,而由大家各自择位而坐。
2)是按单位就座。它指的是与会者在群众席上按单位、部门或者地位、行业就座。它的具体依据,既可以是与会单位、部门的汉字笔划的多少、汉语拼音字母的前后,也可以是其平时约定俗成序列。按单位就座时,如果分为前排后排,以前排为高,以后排为低;如果分为不同楼层,楼层越高,排序越低。
数据结构实验顺序表 篇4
班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX
2858505197@qq.com
一、实验目的:
(1)掌握单链表的基本操作的实现方法。(2)掌握循环单链表的基本操作实现。(3)掌握两有序链表的归并操作算法。
二、实验内容:(请采用模板类及模板函数实现)
1、线性表链式存储结构及基本操作算法实现
[实现提示](同时可参见教材p64-p73页的ADT描述及算法实现及ppt)函数、类名称等可自定义,部分变量请加上学号后3位。也可自行对类中所定义的操作进行扩展。所加载的库函数或常量定义: #include
LinkList(T a[],int n);//利用数组初始化带头结点的单链表构造函数实现
~LinkList();int length();//求单链表表长算法
T get(int i);//获得单链表中第i个结点的值算法
int locate(T temp);void insert(int i,T temp);//在带头结点单链表的第i个位置前插入元素e算法
T Delete(int i);//在带头结点单链表中删除第i个元素算法
void print();//遍历单链表元素算法
bool isEmpty();//判单链表表空算法
void deleleAll();//删除链表中所有结点算法(这里不是析构函数,但功能相同)private: Node
前置条件:无
动作:初始化一个带头结点的空链表 输出:无
后置条件:头指针指向头结点。
//初始化带头结点空单链表构造函数实现 template
(3)利用数组初始化带头结点的单链表构造函数实现 输入:已存储数据的数组及数组中元素的个数 前置条件:无
动作:利用头插或尾插法创建带头结点的单链表 输出:无
后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员。//利用数组初始化带头结点的单链表构造函数实现 template
动作:在带头结点的单链表中第i个位置之前插入元素e 输出:无
后置条件:单链表中增加了一个结点
//在带头结点单链表的第i个位置前插入元素e算法 template p=p->next; count++;} if(p==NULL)cout<<“i不合法,越界!”;else{ Node s->data = temp; s->next = p->next; p->next = s;} }(5)在带头结点单链表中删除第i个元素算法 输入:删除第i个结点,待存放删除结点值变量e 前置条件:单链表不空,i的值要合法 动作:在带头结点的单链表中删除第i个结点,并返回该结点的值(由e传出)。输出:无 后置条件:单链表中减少了一个结点 //在带头结点单链表中删除第i个元素算法 template p=p->next; count++;} if(p==NULL)cout<<“i不合法,越界!”;else{ Node T x= s->data; p->next = s->next; return x;} }(6)遍历单链表元素算法 输入:无 前置条件:单链表不空 动作:遍历输出单链表中的各元素。输出:无 后置条件:无 //遍历单链表元素算法 template cout< data<<“ ”; p=p->next;} cout< (7)求单链表表长算法。输入:无 前置条件:无 动作:求单链表中元素个数。输出:返回元素个数 后置条件:无 //求单链表表长算法 template p=p->next; count++;} return--count;} (8)判单链表表空算法 输入:无 前置条件:无 动作:判表是否为空。 输出:为空时返回1,不为空时返回0 后置条件:无 //判断非空 template (9)获得单链表中第i个结点的值算法 输入:无 前置条件:i不空,i合法 动作:找到第i个结点。 输出:返回第i个结点的元素值。后置条件:无 //获得单链表中第i个结点的值算法 template p=p->next; count++;} if(p==NULL)cout<<“i不合法,越界!”;else{ return p->data;} } (10)删除链表中所有结点算法(这里不是析构函数,但功能相同)输入:无 前置条件:单链表存在 动作:清除单链表中所有的结点。输出:无 后置条件:头指针指向空 //删除所有元素 template Node p=p->next; t->next=NULL;} } (11)上机实现以上基本操作,写出main()程序: 参考p72 void main(){ int a[10]={1,2,3,4,5,6,7,8,9,0};//测试带参数的构造函数(前端插入!) LinkList if(list1.isEmpty()){ cout<<“链表不为空!”< cout<<“链表为空!”< 2、参考单链表操作定义与实现,自行完成单循环链表的类的定义与相操作操作算法。template void insert(int i,T temp);//在带头结点单循环链表的第i个位置前插入元素e算法 T Delete(int i);//在带头结点单循环链表中删除第i个元素算法 void print();//遍历单循环链表元素算法 private: Node 动作:利用头插或尾插法创建带头结点的单循环链表 输出:无 后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员,尾指针指向头结点。 //利用数组初始化带头结点的单循环链表构造函数实现 template s->next = head->next;head->next=s; length++;} } (2)在带头结点单循环链表的第i个位置前插入元素e算法 输入:插入位置i,待插入元素e 前置条件:i的值要合法 动作:在带头结点的单循环链表中第i个位置之前插入元素e 输出:无 后置条件:单循环链表中增加了一个结点 //在带头结点单循环链表的第i个位置前插入元素e算法 template while(count p=p->next; count++; } Node s->data = temp; s->next = p->next; p->next = s;} }(3)在带头结点单循环链表中删除第i个元素算法 输入:删除第i个结点,待存放删除结点值变量e 前置条件:单循环链表不空,i的值要合法 动作:在带头结点的单循环链表中删除第i个结点,并返回该结点的值(由e传出)。输出:无 后置条件:单循环链表中减少了一个结点 //在带头结点单循环链表中删除第i个元素算法 template if(i>length)cout<<“i不合法,越界!”< while(count p=p->next; count++; } Node T x= s->data; p->next = s->next; return x;} } (4)遍历单循环链表元素算法 输入:无 前置条件:单循环链表不空 动作:遍历输出单循环链表中的各元素。输出:无 后置条件:无 //遍历单循环链表元素算法 template cout< data<<“ ”; p=p->next;} cout< (5)上机实现以上基本操作,写出main()程序: void main(){ int a[10]={1,2,3,4,5,6,7,8,9,0};//测试带参数的构造函数(前端插入!) LinkList 3、采用链式存储方式,并利用单链表类及类中所定义的算法加以实现线性表La,Lb为非递减的有序线性表,将其归并为新线性表Lc,该线性表仍有序(未考虑相同时删除一重复值)的算法。模板函数: template if(p1->data>p2->data) { this->insert(++num,p1->data); p1=p1->next; } else{ this->insert(++num,p2->data); p2=p2->next; } } if(!p1){ p1=p2;} while(p1){ this->insert(++num,p1->data); p1=p1->next;} } void main(){ int a[5]={1,2,5,6,9};int b[5]={0,3,4,7,8};LinkList 选做题: 1、按一元多项式ADT的定义,实现相关操作算法: ADT PNode is Data 系数(coef)指数(exp)指针域(next):指向下一个结点 Operation 暂无 end ADT PNode ADT Polynomial is Data PNode类型的头指针。Operation Polynomail 初始化值:无 动作:申请头结点,由头指针指向该头结点,并输入m项的系数和指数,建立一元多项式。 DestroyPolyn 输入:无 前置条件: 多项式已存在 动作:消毁多项式。输出:无 后置条件:头指针指向空 PolyDisplay 输入:无 前置条件: 多项式已存在,不为空 动作:输出多项式各项系数与指数 输出:无 后置条件:无 AddPoly 输入:另一个待加的多项式 前置条件:一元多项式pa和pb已存在。动作及后置条件:完成多项式相加运算,(采用pa=pa+pb形式,并销毁一元多项式pb)输出:无 end ADT Polynomial 2、实现一元多项式的减法,操作描述如下: SubPoly 输入:待减的多项式pb 前置条件:一元多项式pa和pb已存在。 动作及后置条件:完成多项式减法运算,即:pa=pa-pb,并销毁一元多项式pb。输出:无 3、参考P74-P79页双向链表的存储结构定义及算法,编程实现双向链表的插入算法和删除算法。 【数据结构实验顺序表】推荐阅读: 数据结构实验报告三线性表的链式存储09-02 顺序结构与逻辑运算实验报告10-28 数据库表结构设计01-22 数据结构实验01-22 数据结构实验报告05-14 数据结构实验图二05-17 数据结构实验教案12-09 数据结构 实验指导书07-28 数据结构实验教学大纲03-05 数据结构的实验指导书08-26