#include<iostream>
using namespace std;
const int Max=100;
template<typename T>
struct Node
{
T data;
};
template<typename T>
class Indirectadd
{
private:
Node<T> *add[Max];
int length;
public:
Indirectadd();
Indirectadd(T a[],int n);
~Indirectadd();
int Length(){return length;}
T Number_get(int i);
int Location_get(T x);
void Insert(int i,T x);
T Delete(int i);
void Printlist();
};
template<typename T>
Indirectadd<T>::Indirectadd()
{
for(int i=0;i<Max;i++)
add[i]=NULL;
length=0;
}
template<typename T>
Indirectadd<T>::Indirectadd(T a[],int n)
{
for(int i=0;i<n;i++)
{
add[i]=new Node<T>;
add[i]->data=a[i];
}
length=n;
}
template<class T>
Indirectadd<T>::~Indirectadd()
{
Node<T> *p;
for(int i=0;i<length;i++)
{
p=add[i];
add[i]=NULL;
delete p;
}
length=0;
}
template<typename T>
T Indirectadd<T>::Number_get(int i)
{
if(i>=length) throw"位置错误";
return add[i-1]->data;
}
template<typename T>
int Indirectadd<T>::Location_get(T x)
{
for(int i=0;i<length;i++)
{
if(add[i]->data==x)
return (i+1);
}
return 0;
}
template<typename T>
void Indirectadd<T>::Insert(int i,T x)
{
if(i>=length) throw"错误";
for(int j=length;j>i-1;j--)
add[j]=add[j-1];
add[i-1]=new Node<T>;
add[i-1]->data=x;
length++;
}
template<typename T>
T Indirectadd<T>::Delete(int i)
{
if(i<1||i>length) throw"错误";
Node<T> *p;
p=add[i-1];
T x=p->data;
for(int j=i-1;j<length-1;j++)
add[j]=add[j+1];
delete p;
length--;
add[length]=NULL;
return x;
};
template<typename T>
void Indirectadd<T>::Printlist()
{
for(int i=0;i<length;i++)
cout<<add[i]->data<<" ";
}
void main()
{
int stu[10]={90,87,95,77,80,91,74,89,92,97};
Indirectadd<int>student(stu,10);
cout<<"表的长度为:"<<student.Length()<<endl;
cout<<"学生成绩如下:"<<endl;
student.Printlist();
student.Number_get(3);
cout<<"第三位学生的成绩为:"<<student.Number_get(3)<<endl;
cout<<"成绩为90的学生序号为:"<<student.Location_get(90)<<endl;
cout<<"在序号为1的学生后面插进新成绩80:"<<endl;
student.Insert(1,80);
student.Printlist();
cout<<endl;
cout<<"删除序号为2的学生的成绩:"<<endl;
student.Delete(2);
student.Printlist();
cout<<endl;
}
一、实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。
二、实验时间
准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。
三、实验内容
1 、建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
2、用双链表实现。