`

顺序表的建立、插入、删除、查找

阅读更多

顺序表的建立、插入、删除、查找

 

 

程序代码:

 

#include "iostream.h"
#define MaxSize 100
typedef int DataType;
class SeqList
{
	DataType list[MaxSize];
	int length;
public:
	SeqList(){length=0;}
	void SLCreat(int n);
	void SLInsert(int i,DataType x);
	void SLDelete(int i);
	int GetLength(){return length;}
	int SLFind(DataType x);
	DataType SLGet(int i);
	int SLIsEmpty();
	void SLPrint();
};
 
//创建顺序表
void SeqList::SLCreat(int n)
{
	DataType x;
	cout << "请输入数据元素:";
	for (int i=0;i<n;i++){
		cin >>x;
		list[i]=x;
		length++;
	}
}

//在顺序表L中的i位置插入数据元素x
void SeqList::SLInsert(int i,DataType x)
{
	int k;
	if (length>=MaxSize)
		cout<< "表已满,无法插入!"<<endl;
	else if (i<0||i>length)
		cout <<"参数i不合理!" <<endl;
	else 
	{
		for (k=length;k>i;k--)
		{list[k]=list[k-1];}
		list[i]=x;
		length++;
	}
}

//删除第i个位置的数据元素
void SeqList::SLDelete(int i)
{
	int k;
	if (!SLIsEmpty())
		cout << "表已空,无法删除!"<<endl;
	else if (i<0||i>length)
		cout << "参数i不合理!"<<endl;
	else 
	{
		for (k=i-1;k<length;k++)
			list[k]=list[k+1];
		length--;
	}
}

//查找数据元素x在表中的位置
int SeqList::SLFind(DataType x)
{
	int i=0;
	while (i<length&&list[i]!=x)  i++;
	if (i>=length) return -1;
	else return i+1;
}

//获取第i个位置的元素的数值
DataType SeqList::SLGet(int i)
{
	if (i<0||i>length)
	{
		cout<<"参数i不合理!"<<endl;
		return 0;
	}
	else 
		return list[i-1];
}

//判断顺序表是否为空
int SeqList::SLIsEmpty()
{
	if (length<=0) return 0;
	else return 1;
}

//奖顺序表显示在屏幕上
void SeqList::SLPrint()
{
	if (!SLIsEmpty())
		cout<<"空表!"<<endl;
	else 
		for (int i=0;i<length;i++)
			cout<<list[i]<<"  ";
		cout <<endl;
}

void main()
{
	SeqList myList;
	int i,n,flag=1,select;
	DataType x;
	cout<<"1、建立顺序表\n";
	cout<<"2、求第i个位置上的数值\n";
	cout<<"3、求x数值的位置:\n";
	cout<<"4、在第i个位置插入数值元素x\n";
	cout<<"5、删除第i个位置上的数值\n";
	cout<<"6、退出\n";
	cout<<endl;
	while (flag)
	{
		cout<<"请选择操作: ";
		cin>>select;
		switch(select)
		{
		case 1: 
			cout<<"请输入顺序表的长度: ";
			cin>>n;
			myList.SLCreat(n);
			cout<<"你所输入的顺序表为: ";
			myList.SLPrint();
			break;
		case 2:
			cout<<"请输入i的位置: ";
			cin>>i;
			cout<<"第"<<i<<"个位置上的数值为: "<<myList.SLGet(i)<<endl;
			break;
		case 3:
			cout<<"请输入x的值: ";
			cin>>x;
			i=myList.SLFind(x);
			if(i!=-1) cout<<"x的位置为: "<<i<<endl;
			else cout<<"没有找到!";
			break;
		case 4:
			cout<<"请输入要插入的元素的位置i和数值x: ";
			cin>>i>>x;
			myList.SLInsert(i,x);
			cout<<"插入后的顺序表为: ";
			myList.SLPrint();
			break;
		case 5:
			cout<<"请输入要删除的元素的位置: ";
			cin>>i;
			myList.SLDelete(i);
			cout<<"删除后的顺序表为: ";
			myList.SLPrint();
			break;
		case 6:
			flag=0;
			break;
		}
	}
}

 

 

 

运行结果:

 



 

 

  • 大小: 13.1 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics