您的位置:首页 > 其它

实验二 线性表综合实验之《间接寻址》

2017-10-11 13:07 197 查看

 实验二 线性表综合实验之《间接寻址》

一.实验目的
    
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二.实验内容
      建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
要求如下:
1)用顺序表来实现。
2)用单链表来实现。
3)用双链表实现。
4)用静态链表实现。
5)用间接寻址实现。
[align=left]三.实验报告[/align]

1、代码

#include
using namespace std;
const int MaxSize = 100;
template
struct Node
{
T data;
};

template
class IA
{
public:
IA( );                         //构造函数,含头结点的空链表
IA(T a[], int n);      //构造函数,建立有n个元素的单链表
~IA( );
int Length(){ return length; }
T Get(int i);
int Locate(T x);
void Insert(int i,T x);
T Delete(int i);
void PrintList();
private:
Node *s[MaxSize];               //单链表的头指针
int length;
};

//无参构造
template
IA::IA( )
{
for(int i=0;i
IA::IA(T a[], int n)
{
for (int i=0;i; //将数据指向每一个结点
s[i]->data = a[i];        //为每个数组指向结点填入数
}
length = n;
}

//遍历操作
template
void IA::PrintList()
{
for(int i=0;idata<<" ";
}
}

//按位查找
template
T IA::Get(int i)
{
if(i<1 || i>length) throw"查找位置非法";
else return s[i-1]->data;
}

//按值查找
template
int IA::Locate(T x)
{
for(int i=0;idata==x) return i+1;
return 0;  //查找失败,退出循环
}

//插入操作
template
void IA::Insert(int i,T x)
{
if(length>=MaxSize) throw"上溢";
if(i<1||i>length+1) throw"位置";
for(int j=length; j>i; j--)  s[j]=s[j-1];
s[i-1]->data=x;
length++;
}

//删除操作
template
T IA::Delete(int i)
{
if(length==0) throw"下溢";
if(i<1||i>length)throw"位置";
int x=s[i-1]->data;
for(int j=i;j
IA::~IA()
{
}

int main()
{
int arr[5]={78,98,88,79,67};
int flag=0,loc,x,tab,len;
IA A(arr,5);   //install an object

cout<<"\n            间接寻址"<>tab;
switch(tab)
{
case 1:
{
cout<<"1.输出表:";
A.PrintList();
cout<>loc;
x=A.Get(loc);
cout <<"The number is:"<>x;
loc=A.Locate(x);
cout<<"The number's location is:"<>loc;
cout<<"Please input the insert num:";
cin>>x;
A.Insert(loc,x);
cout<>loc;
x=A.Delete(loc);
cout<

2、调试结果

[align=left]①、遍历操作及输出总学生人数[/align]



②、按位查找操作



③、按值查找操作



④、插入操作



⑤、删除操作

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: