《数据结构》实验二:
线性表综合实验
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
分开写程序,可以一个方法分别写一博客文章上交作业。
2.实现两个集合的相等判定、并、交和差运算。要求:
1)自定义数据结构
2)自先存储结构,并设计算法。在VC中实现。
以上三题,第1题必须完成。第2和第3题可以作为选做题。
四.实验报告
1.在博客中先写上实习目的和内容,画出主要操作运算算法图,然后分别上传程序代码。插入调试关键结果截图。
2.单独写一个博文,比较总结线性表的几种主要存储结果。
源代码如下:
《数据结构》实验二:
线性表综合实验
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
分开写程序,可以一个方法分别写一博客文章上交作业。
2.实现两个集合的相等判定、并、交和差运算。要求:
1)自定义数据结构
2)自先存储结构,并设计算法。在VC中实现。
以上三题,第1题必须完成。第2和第3题可以作为选做题。
四.实验报告
1.在博客中先写上实习目的和内容,画出主要操作运算算法图,然后分别上传程序代码。插入调试关键结果截图。
2.单独写一个博文,比较总结线性表的几种主要存储结果。
源代码如下:
《数据结构》实验二:
线性表综合实验
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
分开写程序,可以一个方法分别写一博客文章上交作业。
2.实现两个集合的相等判定、并、交和差运算。要求:
1)自定义数据结构
2)自先存储结构,并设计算法。在VC中实现。
以上三题,第1题必须完成。第2和第3题可以作为选做题。
四.实验报告
1.在博客中先写上实习目的和内容,画出主要操作运算算法图,然后分别上传程序代码。插入调试关键结果截图。
2.单独写一个博文,比较总结线性表的几种主要存储结果。
源代码如下:
《数据结构》实验二:
线性表综合实验
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三..实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
分开写程序,可以一个方法分别写一博客文章上交作业。
2.实现两个集合的相等判定、并、交和差运算。要求:
1)自定义数据结构
2)自先存储结构,并设计算法。在VC中实现。
以上三题,第1题必须完成。第2和第3题可以作为选做题。
四.实验报告
1.在博客中先写上实习目的和内容,画出主要操作运算算法图,然后分别上传程序代码。插入调试关键结果截图。
2.单独写一个博文,比较总结线性表的几种主要存储结果。
源代码如下:
#include<iostream>
using namespace std;
const int MaxSize = 100;
struct Node
{
int data;
};
class Iadd{
public:
Iadd( ); //构造函数,含头结点的空链表
Iadd(int a[], int n); //构造函数,建立有n个元素的单链表
int Length(){ return length; }
int Get(int i);
int Locate(int x);
void Insert(int i,int x);
int Delete(int i);
void PrintList();
private:
Node *s[MaxSize]; //单链表的头指针
int length;
};
void Iadd::PrintList() //遍历操作
{
int i;
for( i=0;i<length;i++)
{
cout<<endl<<"第"<<i+1<<"个学生成绩"<<s[i]->data<<" ";
}
}
Iadd::Iadd() //无参构造函数
{
for(int i=0;i<MaxSize;i++)
s[i] = NULL;
length=0;
}
Iadd::Iadd(int a[], int n) //有参构造函数
{
for (int i=0;i<n;i++)
{
s[i] = new Node; //将数据指向每一个结点
s[i]->data = a[i]; //为每个数组指向结点填入数
}
length = n;
}
int Iadd::Get(int i) //按位查找
{
if(i<1 || i>length) throw"查找位置非法";
else return s[i-1]->data;
}
int Iadd::Locate(int x) //按值查找
{
for(int i=0;i<length;i++)
if(s[i]->data==x) return i+1;
return 0; //查找失败,退出循环
}
void Iadd::Insert(int i,int x) //插入操作
{
int j;
if(length>=MaxSize) throw"上溢";
if(i<1||i>length+1) throw"位置";
for( j=length; j>i; j--) s[j]=s[j-1];
s[i-1]->data=x;
length++;
}
int Iadd::Delete(int i) //删除操作
{
int j;
if(length==0) throw"下溢";
if(i<1||i>length)throw"位置";
int x=s[i-1]->data;
for(j=i;j<length;j++) s[j-1]=s[j];
length--;
return x;
}
int main()
{
int x,n,loc,len,tab;
int j,d[MaxSize],s;
cout<<"录入学生成绩信息"<<endl;
cout<<"要录入人数:";
cin>>n;
for(j=0;j<n;j++)
{
cout<<"第";
cout<<j+1;
cout<<"位学生成绩:";
cin>>d[j];
}
Iadd Ia(d,n);
while (1)
{
cout<<"1.输出学生成绩"<<endl;
cout<<"2.输出表长"<<endl;
cout<<"3.按位查找"<<endl;
cout<<"4.按值查找"<<endl;
cout<<"5.插入"<<endl;
cout<<"6.删除"<<endl;
cout<<"0.退出"<<endl;
cout<<"输入编号(0-6):";
cin>>tab;
switch(tab)
{
case 1:
{
cout<<"输出学生成绩 :";
Ia.PrintList();
cout<<endl;
break;
}
case 2:
{
cout<<"输出表长"<<endl;
len=Ia.Length();
cout<<"表的长度为:"<<len<<endl;
cout<<endl;
break;
}
case 3:
{
cout<<"按位查找"<<endl;
cout<<"输入查找成绩的位置:";
cin>>loc;
x=Ia.Get(loc);
cout <<"要查找的成绩是:"<<x<<endl;
cout<<endl;
break;
}
case 4:
{
cout<<"按值查找"<<endl;
cout<<"输入要查找成绩:";
cin>>x;
loc=Ia.Locate(x);
cout<<"输入要查找成绩的位置是:"<<loc<<endl;
cout<<endl;
break;
}
case 5:
{
cout<<"插入"<<endl;
cout<<"输入要插入成绩的位置:";
cin>>loc;
cout<<"输入要插入的成绩:";
cin>>x;
Ia.Insert(loc,x);
cout<<endl;
break;
}
case 6:
{
cout<<"删除"<<endl;
cout<<"输入要删除的成绩位置:";
cin>>loc;
x=Ia.Delete(loc);
cout<<x<<"已被删除√"<<endl<<endl;
break;
}
default:
{
cout<<"请输入数字0-6!"<<endl;
break;
}
}
}
return 0;
} ;
实验结果如图所示: