實驗一:簡單順序表的建立
阿新 • • 發佈:2018-11-08
#include <iostream>
using namespace std;
class Seqlist
{
public:
Seqlist(){length=0;}//無參構造
Seqlist(int a[], int n);//有參構造
~Seqlist(){} //解構函式
void Insert(int i,int x);//宣告插入
int Delete(int i);//宣告刪除
int Locate(int x);//宣告查詢
void PrintList();//宣告輸出
private:
int data[10];//陣列
int length;//長度
};
Seqlist::Seqlist(int a[],int n)
{
if(n>10)throw"引數非法";
for(int i=0;i<n;i++)
{
data[i]=a[i];
}
length=n;
}
void Seqlist::Insert(int i,int x)//定義插入
{
if(length>10)throw"上溢";
if(i<1||i>length+1)throw"位置非法";
for(int j=length;j>=i;j--)
data[j]=data[j-1];
data[j-1]=x;
length++;
}
int Seqlist::Delete(int i)//定義刪除
{
if(length==0)throw"下溢";
if(i<1||i>length)throw"位置非法";
int x=data[i-1];
for(int j=i;j<length;j++)
data[j-i]=data[j];
length--;
return x;
}
int Seqlist::Locate(int x)//定義查詢
{
for (int i=0;i<length;i++)
if(data[i]==x)return i+1;
return 0;
}
void Seqlist::PrintList()//定義輸出
{for(int i=0;i<length;i++)
cout<<data[i]<<"";
cout<<endl;
}
void main()
{
int r[5]={1,2,3,4,5};
Seqlist L(r,5);
cout<<"執行插入操作前資料為:"<<endl;
L.PrintList();//輸出所有元素
try
{
L.Insert(2,3);//在第二個位置插入值為3的元素
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"執行操作後資料為:"<<endl;
L.PrintList();//輸出所有元素
cout<<"值為3的元素為:";
cout<<L.Locate(3)<<endl;//輸出所有資料
cout<<"執行刪除第一個元素的操作,刪除前的資料為:"<<endl;
L.PrintList();
try
{
L.Delete(1);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"刪除後資料為:"<<endl;//輸出所有元素
L.PrintList();
}
using namespace std;
class Seqlist
{
public:
Seqlist(){length=0;}//無參構造
Seqlist(int a[], int n);//有參構造
~Seqlist(){} //解構函式
void Insert(int i,int x);//宣告插入
int Delete(int i);//宣告刪除
int Locate(int x);//宣告查詢
void PrintList();//宣告輸出
private:
int data[10];//陣列
int length;//長度
};
Seqlist::Seqlist(int a[],int n)
{
for(int i=0;i<n;i++)
{
data[i]=a[i];
}
length=n;
}
void Seqlist::Insert(int i,int x)//定義插入
{
if(length>10)throw"上溢";
if(i<1||i>length+1)throw"位置非法";
for(int j=length;j>=i;j--)
data[j]=data[j-1];
data[j-1]=x;
length++;
}
int Seqlist::Delete(int i)//定義刪除
{
if(i<1||i>length)throw"位置非法";
int x=data[i-1];
for(int j=i;j<length;j++)
data[j-i]=data[j];
length--;
return x;
}
int Seqlist::Locate(int x)//定義查詢
{
for (int i=0;i<length;i++)
if(data[i]==x)return i+1;
return 0;
}
void Seqlist::PrintList()//定義輸出
{for(int i=0;i<length;i++)
cout<<data[i]<<"";
cout<<endl;
}
void main()
{
Seqlist L(r,5);
cout<<"執行插入操作前資料為:"<<endl;
L.PrintList();//輸出所有元素
try
{
L.Insert(2,3);//在第二個位置插入值為3的元素
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"執行操作後資料為:"<<endl;
L.PrintList();//輸出所有元素
cout<<"值為3的元素為:";
cout<<L.Locate(3)<<endl;//輸出所有資料
cout<<"執行刪除第一個元素的操作,刪除前的資料為:"<<endl;
L.PrintList();
try
{
L.Delete(1);
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"刪除後資料為:"<<endl;//輸出所有元素
L.PrintList();
}