栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现线性表的顺序表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现线性表的顺序表

SeqList.h

#pragma once
#include 
using namespace std;
const int MaxSize = 100;
template 
class SeqList
{
public:
	SeqList();//建立空的顺序表 
	SeqList(DataType a[], int n);//建立长度为n的顺序表
	~SeqList();//析构函数
	int Length();//求线性表的长度
	DataType Get(int i);//按位查找,查找第i位元素的值
	int Locate(DataType x);//按值查找,查找值为x的元素序号
	void Insert(int i, DataType x);//插入操作,在第i个位置插入值为x的元素
	DataType Delete(int i);//删除操作,删除第i个位置的元素
	int Empty();//判断顺序表是否为空
	void PrintList();//遍历操作,按序号依次输出各元素
private:
	DataType data[MaxSize];//存放元素的数组		
	int length;//顺序表的长度 
};


template
SeqList::SeqList()//建立空的顺序表
{
	length = 0;
}

template
SeqList::SeqList(DataType a[], int n)//建立长度为n的顺序表
{
	if (n > MaxSize)throw("参数违法");
	for (int i = 0; i < n; i++)
		data[i] = a[i];
		length = n;
}
template
SeqList::~SeqList() {//析构函数
}
template
int SeqList::Empty() // 判断顺序表是否为空
{
	if (length)
		return true;
	else
		return false;

}

template
int SeqList::Length()//求线性表的长度
{
	return length;
}
template 
void SeqList::PrintList()
{
	for (int i = 0; i < length; i++)
		cout << data[i] << 't';//依次输出线性表的元素值
	cout << endl;
}
template 
DataType SeqList::Get(int i)//按位查找,查找第i位元素的值
{
	if (i<1 || i>length)throw "查找位置非法";
	else
		return data[i - 1];
}
template 

int SeqList::Locate(DataType x)//按值查找,查找值为x的元素序号
{
	for (int i = 0; i < length; i++)
		if (data[i] == x) return i + 1;//返回其序号i+1
	return 0;//推出循环,说明查找失败
}

template 
void SeqList::Insert(int i, DataType x)//插入操作,在第i个位置插入值为x的元素
{
	if (length == MaxSize)throw"上溢出";
	if (i<1 || i>length + 1)throw"插入位置错误";
	for (int j = length; j >= i; j--)
		data[j] = data[j - 1];
	data[i - 1] = x;
	length++;
		
}
template 
DataType SeqList::Delete(int i)//删除操作,删除第i个位置的元素
{
	DataType x;
	if (length == 0)throw"下溢";
	if (i<1 || i>length)throw"删除位置错误";
	x = data[i - 1];//取出i位置的元素
	for (int j = i; j < length; j++)
		data[j - 1] = data[j];//此处j 已经是元素所在的数组下标
	length--;
	return x;
}

main.cpp

#include 
#include "SeqList.h"
using namespace std;
int main()
{
	int r[5] = {1,2,3,4,5},i,x;
	SeqListL( r,5 );//建立具有5个元素的顺序表
	cout << "当前顺序表的数据为:";
	L.PrintList();
	try
	{
		L.Insert(2, 8);
		cout << "输出插入后的数据为:";
		L.PrintList();
	}
	catch (char* str) { cout << str << endl; }
	cout << "当前线性表的长度为:" << L.Length() << endl;
	cout << "请输入要查找的元素值:" << endl;
	cin >> x;
	i = L.Locate(x);
	if (0 == i)cout << "查找失败" << endl;
	else
		cout << "元素" << x << "的位置为:" << i << endl;
	try
	{
		cout << "请输入查找第几个元素值:";
		cin >> i;
		cout << "第" << i << "个元素值是" << L.Get(i) << endl;

	}
	catch (char* str) { cout << str << endl; }
	try
	{
		cout << "请输入要删除第几个元素:";
		cin >> i;
		x = L.Delete(i);
		cout << "删除的元素是:" << x << ",删除后数据为:";
		L.PrintList();
	}
	catch (char* str) { cout << str << endl; }
	return 0;
}

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号