21xrx.com
2025-03-30 11:09:58 Sunday
文章检索 我的文章 写文章
如何用C++创建顺序表
2023-07-04 14:51:59 深夜i     11     0
C++ 创建 顺序表

顺序表是一种常用的数据结构,它的实现方式是用一段连续的内存空间来存储数据。在C++中,我们可以使用数组或动态数组来实现顺序表。

创建顺序表的第一步是定义一个存储数据的数组,可以使用如下的语句进行定义:

int arr[100];

这样就定义了一个长度为100的整型数组。如果需要创建动态顺序表,可以使用C++的STL库中的vector容器来实现:

vector<int> vec;

这样就定义了一个空的动态顺序表,可以向其中添加元素。

接下来,我们需要实现顺序表的基本操作,包括插入、删除、查找等。以下是使用数组实现顺序表的基本操作:

// 插入元素
void insert(int arr[], int &n, int pos, int val) {
  if (pos < 0 || pos > n)
    cout << "Invalid position!" << endl;
    return;
  
  for (int i = n; i >= pos; i--) {
    arr[i+1] = arr[i];
  }
  arr[pos] = val;
  n++;
}
// 删除元素
void remove(int arr[], int &n, int pos) {
  if (pos < 0 || pos >= n)
    cout << "Invalid position!" << endl;
    return;
  
  for (int i = pos; i < n-1; i++) {
    arr[i] = arr[i+1];
  }
  n--;
}
// 查找元素
int search(int arr[], int n, int val) {
  for (int i = 0; i < n; i++) {
    if (arr[i] == val)
      return i;
    
  }
  return -1;
}

以上代码中,n表示当前顺序表中的元素个数,pos表示要插入或删除的位置,val表示要插入的值或删除的值。在插入和删除元素时,我们需要移动其他元素,以保证顺序表的连续性。在查找元素时,我们只需要遍历整个数组,将找到的位置返回即可。

如果使用vector实现顺序表,可以直接使用vector中已经实现好的函数进行操作,比如push_back、pop_back、insert、erase等函数。

最后,为了方便使用,我们可以将以上代码封装成一个类,以便使用时调用相应的函数即可。


class SeqList {

private:

  vector<int> data;

public:

  // 构造函数

  SeqList() {}

  // 插入元素

  void insert(int pos, int val) {

    if (pos < 0 || pos > data.size())

      cout << "Invalid position!" << endl;

      return;

    

    data.insert(data.begin()+pos, val);

  }

  // 删除元素

  void remove(int pos) {

    if (pos < 0 || pos >= data.size())

      cout << "Invalid position!" << endl;

      return;

    

    data.erase(data.begin()+pos);

  }

  // 查找元素

  int search(int val) {

    for (int i = 0; i < data.size(); i++) {

      if (data[i] == val)

        return i;

      

    }

    return -1;

  }

};

使用以上代码,我们就可以方便地创建并操作顺序表了。当然,这只是顺序表的基本操作,如果需要更多的功能,比如排序、合并等操作,需要根据具体需求进行实现。

  
  

评论区