21xrx.com
2024-11-25 01:10:24 Monday
登录
文章检索 我的文章 写文章
如何用C++创建顺序表
2023-07-04 14:51:59 深夜i     --     --
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;

  }

};

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复