21xrx.com
2025-03-29 19:41:43 Saturday
文章检索 我的文章 写文章
C++数据结构——顺序表
2023-07-11 12:20:11 深夜i     --     --
C++ 数据结构 顺序表 线性表 数组

顺序表是一种线性表结构,通常使用数组实现。C++语言是一门面向对象的编程语言,其强大的面向对象特性可以被应用于数据结构的实现中。在C++中,我们可以使用类来描述顺序表,并在类中实现相关的操作。

下面是一个简单的顺序表类的定义:

class SeqList{
private:
  int* data; // 使用动态内存分配来存储顺序表中的数据
  int size; // 顺序表的容量
  int length; // 顺序表当前的长度
public:
  SeqList(int sz){ // 构造函数
    size = sz;
    data = new int[size]; // 动态分配内存
    length = 0;
  }
  ~SeqList(){ // 析构函数
    delete[] data; // 释放内存
  }
  int getSize(){ // 获取容量
    return size;
  }
  int getLength(){ // 获取长度
    return length;
  }
  int get(int index){ // 获取指定位置的元素
    if(index >= length || index < 0){ // 判断下标是否合法
      cout << "Invalid Index!" << endl;
      return -1;
    }
    return data[index];
  }
  bool insert(int index, int element){ // 插入元素
    if(length >= size){ // 判断数组是否已满
      cout << "SeqList is Full!" << endl;
      return false;
    }
    if(index < 0 || index > length){ // 判断下标是否合法
      cout << "Invalid Index!" << endl;
      return false;
    }
    for(int i = length-1; i >= index; i--){ // 从后往前移动元素
      data[i+1] = data[i];
    }
    data[index] = element; // 插入新元素
    length++; // 长度加1
    return true;
  }
  bool remove(int index){ // 删除元素
    if(index >= length || index < 0){ // 判断下标是否合法
      cout << "Invalid Index!" << endl;
      return false;
    }
    for(int i = index; i < length-1; i++){ // 从前往后移动元素
      data[i] = data[i+1];
    }
    length--; // 长度减1
    return true;
  }
};

在顺序表类中,我们通过使用动态内存分配来管理顺序表中元素的存储,可以动态扩展顺序表的容量。另外,定义了一些常用的操作,例如获取顺序表的容量、长度和指定位置的元素值;插入元素和删除元素等等操作。这些操作可以满足顺序表的数据存储和处理需求。

C++语言的面向对象特性为数据结构的实现提供了良好的支持。使用类来封装数据结构,不仅可以使代码结构更加清晰和易读,还可以提高代码的可维护性和复用性,为数据结构的使用和开发带来更多的便利。

  
  

评论区