前言:
而今咱们对“线性表的基本操作的实验报告”大体比较着重,各位老铁们都需要分析一些“线性表的基本操作的实验报告”的相关内容。那么小编也在网上网罗了一些对于“线性表的基本操作的实验报告””的相关知识,希望姐妹们能喜欢,你们一起来学习一下吧!线性表的定义和功能
一个线性表可以支持以下操作:
插入元素:在指定位置插入元素。删除元素:删除指定位置的元素。获取元素:访问指定位置的元素。更新元素:修改指定位置的元素。动态扩展:当容量不足时自动扩展。显示内容:打印当前线性表的内容。实现步骤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;}显示结果
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #线性表的基本操作的实验报告