龙空技术网

数据结构——线性表——动态数组设计与实现——c++

渡幽 12

前言:

而今咱们对“线性表的基本操作的实验报告”大体比较着重,各位老铁们都需要分析一些“线性表的基本操作的实验报告”的相关内容。那么小编也在网上网罗了一些对于“线性表的基本操作的实验报告””的相关知识,希望姐妹们能喜欢,你们一起来学习一下吧!

线性表的定义和功能

一个线性表可以支持以下操作:

插入元素:在指定位置插入元素。删除元素:删除指定位置的元素。获取元素:访问指定位置的元素。更新元素:修改指定位置的元素。动态扩展:当容量不足时自动扩展。显示内容:打印当前线性表的内容。实现步骤1. 定义类 DynamicArray

动态数组的线性表类需要维护以下成员变量:

int* data:存储元素的动态数组。int size:当前线性表的实际大小。int capacity:线性表的总容量。

还需要提供以下功能:

构造函数和析构函数,用于初始化和释放内存。动态扩展数组容量。各种线性表的操作函数。 代码实现DynamicArray.h文件

#pragma once#include <stdexcept>class DynamicArray {private:	int* data; //动态数组,用来维护数组的堆区 内存地址	int size;//当前元素个数	int capacity;//数组容量		//动态扩展容量	void expand();public:	DynamicArray(int initialCapacity = 10);	~DynamicArray();	int getSize()const;//获取数组大小	int getIndexToValue(int index)const;//获取指定位置元素	void set(int index, int value);//更新指定位置的元素值	void insert(int index, int value);//指定位置插入数据	void add(int value);//尾部添加数据	void remove(int index);//删除数据	void print()const;};
DynamicArray.cpp文件
#include "DynamicArray.h"#include <iostream>void DynamicArray::expand(){	capacity *= 2;	int* newData = new int[capacity];	for (int i = 0; i < size; i++)	{		newData[i] = data[i];	}	delete[] data;//释放旧内存	data = newData;}DynamicArray::DynamicArray(int initialCapacity) :size(0), capacity(initialCapacity){	if (initialCapacity <= 0)	{		throw std::invalid_argument("容量参数无效");	}	data = new int[capacity];}DynamicArray::~DynamicArray(){	delete[] data;}int DynamicArray::getSize() const{	return size;}int DynamicArray::getIndexToValue(int index) const{	if (index < 0 || index >= size) {		throw std::out_of_range("超标");	}	return data[index];}void DynamicArray::set(int index, int value){	if (index < 0 || index >= size) {		throw std::out_of_range("Index out of range");	}	data[index] = value;}//在指定位置插入元素void DynamicArray::insert(int index, int value){	if (index < 0 || index > size) {		throw std::out_of_range("Index out of range");	}	//判断下插入元素时容量是否足够	if (size >= capacity)	{		expand();	}	//移动元素	for (int i = size; i > index; i--)	{		data[i] = data[i - 1];	}	//插入新元素	data[index] = value;	size++;}void DynamicArray::add(int value){	insert(size, value);}void DynamicArray::remove(int index){	if (index < 0 || index >= size) {		throw std::out_of_range("Index out of range");	}	//移动元素	for (int i = index; i < size - 1; i++)	{		data[i] = data[i + 1];	}	size--;}void DynamicArray::print() const{	for (int i = 0; i < size; i++)	{		std::cout << data[i] << " ";	}	std::cout << std::endl;}
测试
#include <iostream>#include "DynamicArray.h"int main(){	try {		DynamicArray darr;		darr.add(10);		darr.add(10);		darr.add(10);		std::cout << "After adding elements: ";		darr.print();		//插入元素		darr.insert(1, 15);		std::cout << "After inserting 15 at index 1: ";		darr.print();		//更新元素		darr.set(2, 20);		std::cout << "AAfter updating index 2 to 20:: ";		darr.print();		//删除元素		darr.remove(1);		std::cout << "After removing element at index 1: ";		darr.print();		//获取元素		std::cout << "Element at index 1: " << darr.getIndexToValue(1) << std::endl;	}	catch (const std::exception& e)	{		std::cerr << "Error" << "--" << e.what() << std::endl;	}	return 0;}
显示结果

标签: #线性表的基本操作的实验报告