间接寻址建立学生成绩

xiaoxiao2021-02-28  37

实验内容:     

建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。 

代码:

#include<iostream>  

using namespace std;   const int M=10;   struct Node   {       int data;   };   class Student {   public:       Student();      Student(int a[],int n);       ~Student();       void Input(int i,int x);       int Delete(int i);       int Locate(int x);       void Print();   private:       Node *data[M];       int length;   };   Student::Student()   {       for(int i=0;i<M;i++)       {data[i]=NULL;}       length=0;   }   Student::Student(int a[],int n)   {       if(n<0||n>M)  throw"参数非法";       for(int i=0;i<M;i++)       {data[i]=NULL;}       for(int j=0;j<n;j++)       {           data[j]=new Node;           data[j]->data=a[j];       }       length=n;   }   Student::~Student()   {       Node *p;         for(int i=0;i<length;i++)         {             p=data[i];             data[i]=NULL;             delete p;         }     }   void Student::Input(int i,int x)   {       if(i<1||i>length+1)  throw"位置非法";       for(int j=length;j>=i;j--)           data[j]=data[j-1];       data[i-1]=new Node;       data[i-1]->data=x;       length++;   }   int Student::Delete (int i)   {       if(length==0) throw"下溢";       if(i<1||i>length) throw"位置非法";       Node *p=data[i-1];       int x=p->data;       for(int j=i-1;j<length-1;j++)           data[j]=data[j+1];       delete p;       length--;       data[length]=NULL;       return x;   }   int Student::Locate(int x)   {       for(int i=0;i<length;i++)           if(data[i]->data ==x) return i+1;       return 0;   }      void Student::Print()   {       for(int i=0;i<length;i++)   cout<<"第"<<i+1<<"个学生成绩:"<<data[i]->data <<endl;     cout<<endl;   }   void main() { int r[5]={80,90,70,60,50}; Student L(r,5); cout<<"录入学生信息:"<<endl; L.Print(); cout<<endl; cout<<"在第2个位置插入85"<<endl; L.Input(2,85); cout<<"插入后学生成绩为:"<<endl; L.Print(); cout<<endl; cout<<"成绩为85的学生位置为:"<<endl; cout<<L.Locate(85)<<endl; cout<<"删除第一个学生成绩"<<endl; L.Delete(1); cout<<"删除后学生成绩为:"<<endl;

L.Print();}

转载请注明原文地址: https://www.6miu.com/read-2621650.html

最新回复(0)