21xrx.com
2025-03-30 11:50:22 Sunday
文章检索 我的文章 写文章
C++实现顺序表的方法
2023-06-25 06:38:35 深夜i     12     0
C++ 实现 顺序表 方法

顺序表是一种常见的数据结构,它可以用来存储一组连续的元素。C++语言中可以通过数组来实现顺序表,也可以通过动态内存分配来实现动态顺序表。

实现步骤:

1. 定义结构体或类,包括数据成员和成员函数。

struct SeqList {
  int *data; // 存储元素的数组指针
  int length; // 当前元素个数
  int capacity; // 数组容量
  SeqList(int cap = 10) { // 构造函数
    data = new int[cap];
    length = 0;
    capacity = cap;
  }
  ~SeqList() { // 析构函数
    delete[] data;
  }
  int getLength() const { return length; } // 获取当前元素个数
  int getCapacity() const { return capacity; } // 获取数组容量
  void clear() { length = 0; } // 清空顺序表
  bool isEmpty() const { return length == 0; } // 判断顺序表是否为空
  bool isFull() const { return length == capacity; } // 判断顺序表是否已满
  void show() { // 打印顺序表中的元素
    for (int i = 0; i < length; i++)
      cout << data[i] << " ";
    cout << endl;
  }
  bool insert(int pos, int val) { // 在指定位置插入元素
    if (pos < 0 || pos > length || isFull()) return false;
    for (int i = length - 1; i >= pos; i--)
      data[i + 1] = data[i];
    data[pos] = val;
    length++;
    return true;
  }
  bool remove(int pos) { // 删除指定位置的元素
    if (pos < 0 || pos > length - 1 || isEmpty()) return false;
    for (int i = pos; i < length - 1; i++)
      data[i] = data[i + 1];
    length--;
    return true;
  }
  int get(int pos) const { // 获取指定位置的元素
    assert(pos >= 0 && pos <= length - 1);
    return data[pos];
  }
  bool set(int pos, int val) { // 修改指定位置的元素
    if (pos < 0 || pos > length - 1) return false;
    data[pos] = val;
    return true;
  }
  int find(int val) const { // 查找元素是否存在
    for (int i = 0; i < length; i++)
      if (data[i] == val) return i;
    return -1;
  }
};

2. 调用构造函数创建顺序表对象。

SeqList list(10);

3. 调用成员函数对顺序表进行操作。

插入元素:

list.insert(0, 1); // 在第一个位置插入元素1
list.insert(1, 2); // 在第二个位置插入元素2
list.insert(2, 3); // 在第三个位置插入元素3
list.show(); // 输出:1 2 3

删除元素:

list.remove(1); // 删除第二个位置的元素2
list.show(); // 输出:1 3

修改元素:

list.set(1, 4); // 将第二个位置的元素3修改为4
list.show(); // 输出:1 4

查找元素:

cout << list.find(1) << endl; // 输出:0
cout << list.find(2) << endl; // 输出:-1(不存在)

获取元素:

cout << list.get(1) << endl; // 输出:4

清空顺序表:

list.clear();
list.show(); // 输出空行

以上就是C++实现顺序表的方法。通过定义结构体或类,以及实现相应的成员函数,可以方便地对顺序表进行操作。顺序表的插入、删除、修改、查找等操作都比较简单易懂,适合初学者入门。

  
  

评论区

请求出错了