《数据结构》实验二:
线性表综合实验
一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题
二.实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
间接寻址的实现
#include
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;idata<<" ";
}
}
Iadd::Iadd() //无参构造函数
{
for(int i=0;idata = 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;idata==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>n;
for(j=0;j>d[j];
}
Iadd Ia(d,n);
while (1)
{
cout<<"\t\t\t\t\t********** 间接寻址的实现 **********"<>tab;
switch(tab)
{
case 1:
{
cout<<"\t\t\t\t\t1.输出学生成绩 :";
Ia.PrintList();
cout<>loc;
x=Ia.Get(loc);
cout <<"\t\t\t\t\t要查找的成绩是:"<>x;
loc=Ia.Locate(x);
cout<<"\t\t\t\t\t输入要查找成绩的位置是:"<>loc;
cout<<"\t\t\t\t\t输入要插入的成绩:";
cin>>x;
Ia.Insert(loc,x);
cout<>loc;
x=Ia.Delete(loc);
cout<
1)录入并输出学生成绩
2)输出表长
3)按位查找
4)按值查找
5)插入操作
6)插入成功后输出成绩
7)
删除操作
8)插入成功后输出成绩