实验二 线性表综合实验——间接寻址

来源:互联网 发布:php商城源码带支付 编辑:程序博客网 时间:2024/05/17 12:53

一、实验目的

     巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。 

二、.实验内容     

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

三、程序代码 

#include<iostream>using namespace std;const int MaxSize=10;struct node{int data;};class SeqList{public:SeqList();SeqList(int a[],int n);~SeqList();void Insert(int i,int x);int Delete(int i);int Locate(int x);void PrintList();private:node *data[MaxSize];int length;};SeqList::SeqList(){for(int i=0;i<MaxSize;i++){data[i]=NULL;}length=0;}SeqList::SeqList(int a[],int n){if(n<0||n>MaxSize) throw"参数非法";for(int i=0;i<MaxSize;i++){data[i]=NULL;}for(int j=0;j<n;j++){data[j]=new node;data[j]->data=a[j];}length=n;}SeqList::~SeqList(){node *p;      for(int i=0;i<length;i++)      {          p=data[i];          data[i]=NULL;          delete p;      }  }void SeqList::Insert(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 SeqList::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 SeqList::Locate(int x){for(int i=0;i<length;i++)if(data[i]->data ==x) return i+1;return 0;}void SeqList::PrintList(){for(int i=0;i<length;i++)cout<<data[i]->data <<" ";cout<<endl;}void main(){int r[5]={91,92,94,95,96};SeqList L(r,5);cout<<"执行插入操作前的数据为:"<<endl;L.PrintList();cout<<"在第三个位置插入成绩93"<<endl;try{L.Insert(3,93);}catch(char *s){cout<<s<<endl;}cout<<"执行插入操作后数据为:"<<endl;L.PrintList();cout<<"执行值为93的成绩位置为:";cout<<L.Locate(93)<<endl;cout<<"执行删除第一个成绩操作,删除前数据为:"<<endl;L.PrintList();try{L.Delete(1);}catch(char *s){cout<<s<<endl;}cout<<"删除后数据为:"<<endl;    L.PrintList();}


原创粉丝点击