21xrx.com
2024-09-20 05:41:36 Friday
登录
文章检索 我的文章 写文章
C++实现顺序表
2023-07-05 06:08:55 深夜i     --     --
C++ 顺序表 实现

顺序表是计算机科学中常用的一种数据结构。它是基于数组的实现,具有随机存储能力,因而非常适用于对元素的直接访问操作。C++语言作为一种面向对象编程语言,自然也提供了相应的函数和类库来实现顺序表。

在C++语言中,创建一个顺序表的实现主要依赖于STL(标准模板库)中的vector类。vector是一个标准容器,通常用于存储可变长度的数据。vector类是一个具有可变大小的数组容器,通过其成员函数实现动态增加和删除元素的操作。以下是使用vector类实现一个简单的顺序表的样例代码:


#include <iostream>

#include <vector>

using namespace std;

int main() {

  vector<int> list;

  list.push_back(3);

  list.push_back(4);

  list.push_back(5);

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

    cout << list[i] << " ";

  }

  return 0;

}

在这个样例代码中,我们创建了一个vector对象list,并通过它的成员函数push_back往列表中添加了三个整数元素。最后,我们使用for循环遍历列表,并通过数组方式访问其中的元素并输出。

虽然使用vector类非常方便,但在实际应用中,由于vector类存储元素时需要开辟连续的内存空间,当元素数量较大时,容易导致内存碎片问题。因此,为了提高代码的鲁棒性和可扩展性,也可以通过手动创建一个动态数组的方式实现顺序表。以下是使用动态数组实现顺序表的样例代码:


#include <iostream>

using namespace std;

const int MAX_SIZE = 20;

class SequenceList {

public:

  SequenceList() {}

  ~SequenceList() {}

  bool isEmpty()

    return size == 0;

  

  

  bool isFull() {

    return (size == MAX_SIZE);

  }

  

  void clear()

    size = 0;

  

  

  void insert(int index, int value) {

    if (index > size || index < 0 || isFull())

      return;

    

    for (int i = size - 1; i >= index; i--) {

      list[i+1] = list[i];

    }

    list[index] = value;

    size++;

  }

  

  void remove(int index) {

    if (index < 0 || index >= size || isEmpty())

      return;

    

    for (int i = index; i < size - 1; i++) {

      list[i] = list[i+1];

    }

    size--;

  }

  

  int get(int index) {

    if (index < 0 || index >= size)

      return -1;

    

    return list[index];

  }

  

  void print() {

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

      cout << list[i] << " ";

    }

    cout << endl;

  }

private:

  int list[MAX_SIZE];

  int size = 0;

};

int main() {

  SequenceList list;

  list.insert(0, 3);

  list.insert(1, 4);

  list.insert(2, 5);

  list.print();

  list.remove(1);

  list.print();

  return 0;

}

在这个样例代码中,我们使用了一个自定义的SequenceList类来实现顺序表。它使用一个动态数组来保存元素,并提供了插入、删除、清空、获取和打印等常用操作。由于是手动实现的,因此在使用时需要更加谨慎,但同时也具有更加灵活的扩展性和自定义功能的能力。

无论是使用STL中的vector类还是手动创建动态数组来实现顺序表,在C++语言中都非常方便和省心。选择不同的实现方式取决于具体的应用场景和需求。作为一名合格的程序员,需要根据具体情况选用合适的数据结构和算法,以实现高效、可靠、易读易维护的代码。

  
  

评论区

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