数据结构编程练习(一)
设计思路:编写C++顺序表类,利用顺序存储结构存储数据,并实现其相应功能。
功能1:完成顺序表的初始化。
功能2:实现顺序表的置空功能。
功能3:实现顺序表的输入功能。
功能4:求顺序表中第i个元素,要求返回第i个元素是否存在的结果,并返回第i个元素值,利用如下的函数形式实现:
功能5:在第i个结点前插入值为x的结点。
功能6:删除顺序表中第i个元素结点,需返回第i个是否存在的状态,并返回删除值。
功能7:检查顺序表中是否有重复的元素,若有,则删除重复的元素,该功能要求能返回是否重复的结果,并将删除元素返回。
代码实现:
#include "iostream"
#include "algorithm"
using namespace std;
#define max 100
class seq_list
{
public:
seq_list();
~seq_list();
int length();
int input();
bool get_Element(int i);
int insert(int i,int x);
bool del_Element(int i);
int del_sort();
int output();
private:
int data[max];
int count;
};
//顺序表的初始化
seq_list::seq_list()
{
count=0;
}
//析构函数
seq_list::~seq_list()
{
}
//求顺序表的长度
int seq_list::length()
{
return count;
}
//顺序表的输入
int seq_list::input()
{
int n;
while(cin>>n&&n>=0)
{
data[count]=n;
count++;
}
return 0;
}
//取第i个位置元素
bool seq_list::get_Element(int i)
{
if(i>count+1||i<0)
{
cout<<"不在范围"<<endl;
return false;
}
else
{
cout<<"第"<<i<<"个位置元素为:"<<data[i-1]<<endl;
return true;
}
}
//在第i个位置插入x
int seq_list::insert(int i,int x)
{
if(i<0||i>count)
{
cout<<"不在范围"<<endl;
return 0;
}
else
{
int j=count-1;
for(;j>=i-1;j--)
data[j+1]=data[j];
data[i-1]=x;
count++;
return 1;
}
}
//删除第i个位置的元素
bool seq_list::del_Element(int i)
{
if(i<0||i>count)
{
cout<<"不在范围"<<endl;
return false;
}
else
{
cout<<data[i-1]<<"已被删除"<<endl;
for(;i<count;i++)
data[i-1]=data[i];
count--;
return true;
}
}
//删除重复元素
int seq_list::del_sort()
{
bool flag=0;
sort(data,data+count);
for(int i=0;i<count-1;i++)
{
if(data[i]==data[i+1])
{
del_Element(i+1);
i--;
flag=1;
}
}
if(flag)
return 1;
else
{
cout<<"无重复元素"<<endl;
return 0;
}
}
//顺序表的输出
int seq_list::output()
{
cout<<"当前顺序表为:";
for(int i=0;i<count;i++)
cout<<data[i]<<" ";
cout<<endl;
return 0;
}
int main()
{
int n,x;
seq_list obj1;
cout<<"请输入顺序表,以负数作为结束标志:";
obj1.input();
obj1.output();
cout<<"顺序表的长度为:"<<obj1.length()<<endl;
cout<<"请输入所要取元素的位置:";
cin>>n;
obj1.get_Element(n);
obj1.output();
cout<<"请输入所要插入的位置以及所要插入的元素:";
cin>>n>>x;
obj1.insert(n,x);
obj1.output();
cout<<"请输入所要删除元素的位置:";
cin>>n;
obj1.del_Element(n);
obj1.output();
obj1.del_sort();
obj1.output();
return 0;
}