顺序表的建立(顺序存储)

数据结构编程练习(一)

设计思路:编写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;
} 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值