算法与数据结构 顺序表

1.随机产生10个100以内的整数建立一个顺序表,显示该顺序表中的数据元数;
2.随机产生10个100以内的整数建立一个顺序表,显示该顺序表中的数据元数,随机产生1-10中的任意整数 p ,在顺序表中查找第 p 个元素,并显示该元素值;
3.随机产生10个100以内的整数建立一个顺序表,显示该顺序表中的数据元数,输入顺序表中任一元素,查找并显示该元素在顺序表中的位置;
4.随机产生10个100以内的整数建立一个顺序表,显示该顺序表中的数据元数,将33插入到第3个元素位置,并显示更新后的顺序表;
5.随机产生10个100以内的整数建立一个顺序表,显示该顺序表中的数据元数,输入顺序表中任一元素,删除该元素,并显示更新后的顺序表;

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MaxSize = 100;//全局变量
template <typename DataType>
class Seqlist//定义一个顺序表的类
{
private:
	DataType data[MaxSize];
	int length;
public:
	Seqlist() :length(0) {}//初始化长度为0
	Seqlist(DataType a[], int n)//形参a[]来给data[]赋值,n,数组的长度
	{
		for (int i = 0; i < n; i++)
		{
			data[i] = a[i];
		}
		length = n;
	}
	~Seqlist() {}//析构函数
	int Length() { return length; }
	int Get(int i) { return data[i]; }
	int Locate(DataType x)//顺序表的查找
	{
		for (int i = 0; i < length; i++)
		{
			if (data[i] == x)
				return i;
		}
		return -1;//若没有找到,返回-1
	}
	void insert(int i, DataType x)//在顺序表中插入一个新元素;i为所插入值为x在数组中的下标
	{
		if (i<0 || i>length)//因为是插入一个元素,所以不用加等号,元素可以插在最后
			throw "Insert position out of range!";//判断i值是否超出所允许的范围
		for (int j = length; j > i; --j)
		{
			data[j] = data[j - 1];//让原数组中下标为i及之后的数从后往前依此后移一个
		}
		data[i] = x;
		++length;
	}
	int Delete(int i)//在顺序表中删除一个指定的元素,i为所删除的值在数组中的原下标
	{
		if (i < 0 || i >= length)//判断i值是否超出所允许的范围;若不加等号,会删除一个本就不存在的数,会报错
		{
			throw"Delete position out of range!";
		}
		int temp = data[i];//定义一个变量,来储存被删除的元素的值
		for (int j = i; j < length - 1; ++j)//数组的下标从0开始变化,将下标为i+1及之后的元素依次从前向后前移一个,覆盖掉原下标为i的值
		{
			data[j] = data[j + 1];
		}
		--length;//删除一个元素后,长度减1
		return temp;
	}
	bool Empty() { return length == 0; }//判断顺序表是否为空
	void PrintList()//打印顺序表
	{
		for (int i = 0; i < length; ++i)
			cout << data[i] << " ";
		cout << endl;
	}
};
int main()
{
	srand(static_cast<unsigned int>(time(nullptr)));

	Seqlist<int> list; // 创建一个空的顺序表对象  

	// 生成10个100以内的随机数并添加到顺序表中  
	for (int i = 0; i < 10; i++) {
		int randomValue = rand() % 100; // 生成0到99之间的随机数  
		list.insert(list.Length(), randomValue); // 将随机数插入顺序表的末尾  
	}
	list.PrintList(); // 打印顺序表中的所有元素  
	cout << "原始顺序表";
	list.PrintList();
	int insertpos; //要插入元素在数组中的下标
	int insertValue;//要插入的值
	cout << "请输入要插入的下标" << endl;
	cin >> insertpos;
	cout << "请输入要插入的值" <<endl;
	cin >> insertValue;
	list.insert(insertpos, insertValue);//调用插入函数
	cout << "After inserting " << insertValue << "at position" << insertpos << ": ";
	list.PrintList();
	int indexposvalue = list.Get(0);
	cout << "打印顺序表的第一个元素" << indexposvalue;
	cout << endl;
	int cz;
	cout << "请输入要查找的数" << endl;
	cin >> cz;
	int locationByValue = list.Locate(cz);//查找数组中是否有值为444;调用查找函数
	if (locationByValue == -1)
	{
		cout << "该顺序表中没有该值" << endl;
	}
	else
	{
		cout << "查找成功" << endl;
	}
	int d1, dn;
	cout << "请输入要删除的数的下标" << endl;
	cin >> d1;
	cout << "请输入要删除的数" << endl;
	cin >> dn;
	if (list.Delete(d1) == dn)
	{
		cout << "删除成功" << endl;
	}
	else
	{
		cout << "删除失败" << endl;
	}

	return 0;
}

相关推荐

  1. 算法数据结构 顺序

    2024-03-31 11:36:03       16 阅读
  2. 数据结构顺序

    2024-03-31 11:36:03       13 阅读
  3. 数据结构】5.ArrayList顺序

    2024-03-31 11:36:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 11:36:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 11:36:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 11:36:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 11:36:03       18 阅读

热门阅读

  1. sql注入相关题目

    2024-03-31 11:36:03       10 阅读
  2. node.js 常用命令

    2024-03-31 11:36:03       12 阅读
  3. C# comboBox

    2024-03-31 11:36:03       12 阅读
  4. MyBatis——动态SQL

    2024-03-31 11:36:03       11 阅读
  5. 在Python中,当你执行 print(2, 3) 时

    2024-03-31 11:36:03       13 阅读
  6. LeetCode刷题--- 回文子串

    2024-03-31 11:36:03       17 阅读
  7. Mysql数据库调优

    2024-03-31 11:36:03       15 阅读
  8. leetcode 704. 二分查找

    2024-03-31 11:36:03       14 阅读
  9. SQLAlchemy中常用的查询方法[示例学习]

    2024-03-31 11:36:03       13 阅读
  10. k8s学习

    k8s学习

    2024-03-31 11:36:03      18 阅读
  11. Mybatis相关面试题详细总结

    2024-03-31 11:36:03       14 阅读
  12. 采药采药~

    2024-03-31 11:36:03       14 阅读
  13. linux redis 快速安装

    2024-03-31 11:36:03       15 阅读