顺序表插入删除查找操作

                                                            线性表实验

一、实验目的

1.掌握线性表的顺序存储结构

2.验证顺序表及其基本操作的实现

3.理解算法与程序的关系们能够将顺序表算法转换为对应的程序

二、实验步骤

1.建立含有若干个元素的顺序表

2.对已建立的顺序表实现插入、删除、查找等基本操作


代码如下

#include<iostream>
using namespace std;

const int Max = 100;
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 length;  
	int data[Max];  
};
//有参构造函数
SeqList::SeqList(int a[], int n)
{
	if (n>Max)throw "参数非法";
	for (int i = 0; i<n; i++)
	{
		data[i] = a[i];
		length = n;
	}
}
//在顺序表第i个位置插入值为x的元素
void SeqList::Insert(int i, int x)
{
	if (length >= Max) throw"上溢";
	if (i<1 || i>length + 1) throw "位置非法";
	else
	{
		for (int j = length; j >= i; j--)
		{
			data[j] = data[j - 1];  //第j个元素存在数组下标为j-1处
		}
		data[i - 1] = x;
		length++;
		
	}
}
//删除顺序表的第i个元素
int SeqList::Delete(int i)
{
	if (length == 0) throw"下溢";
	if (i<1 || i>length) throw "位置非法";
	else
	{
		int x = data[i - 1];
		for (int j = i; j<length; j++)
		{
			data[j - 1] = data[j];
		}
		length--;
		return x;
	}
}
//求线性表中值为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();
	//插入数据
	L.Insert(2,7);
	cout << '\n' << "插入位置2数字7后顺序表的内容为:" << endl;
	L. PrintList();
	//删除数据
	int k;
	cout << '\n' << "请输入需要删除的数据序号:";
	cin >> k;
	cout << "删除成功!你所删除的数据为:" << L.Delete(k) << endl;
	cout << "顺序表的内容为:" << endl;
	L.PrintList();  
	//按值查找
	int y;
	cout << '\n' << "请输入要查找的数据:";
	cin >> y;
	cout << "你所查找的值所在的位置为:" << L.Locate(y) << endl;
}

实验结果



三、实验心得

Insert函数想写成用户自己输入数据这一点还要多修改,暂时只能做到利用写好的程序显示出来。

课本第一章课后习题0

4.(1)顺序表的优点是:无需为表中的元素之间的逻辑关系而增加额外的存储空间;可以快速地存取表中任一位置的元素(即随机存储)

顺序表的缺点是:插入和删除操作需移动大量元素;表的容量难以确定;造成存储空间的碎片

单链表的优点是:不必事先知道线性表的长度;插入和删除元素时只需修改指针,不用移动元素

单链表的缺点是:指针的结构性开销;存取表中任意元素不方便,只能进行顺序存取

(2)顺序存储结构;链接存储结构;链接存储结构


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值