21xrx.com
2024-12-27 20:30:08 Friday
登录
文章检索 我的文章 写文章
C++顺序表代码实现
2023-07-04 22:45:53 深夜i     --     --
C++ 顺序表 代码实现

C++顺序表是一种非常常见的数据结构,它是由一组连续的内存空间组成的线性表,可以方便地对其中的元素进行增删查改操作。本文将介绍如何使用C++编写顺序表的代码实现。

先来看一下顺序表的基本数据结构:


template <typename T>

class SeqList {

public:

  SeqList(int size = 10) {

    data = new T[size];

    len = 0;

    max_size = size;

  }

  ~SeqList() {

    delete[] data;

  }

  int length() const {

    return len;

  }

  bool isEmpty() const {

    return len == 0;

  }

  bool isFull() const {

    return len == max_size;

  }

  T& at(int i) {

    if (i < 0 || i >= len) {

      std::cerr << "Error: Index out of range.\n";

      exit(1);

    }

    return data[i];

  }

  void insert(int i, T elem) {

    if (isFull()) {

      std::cerr << "Error: The list is full.\n";

      exit(1);

    }

    if (i < 0 || i > len) {

      std::cerr << "Error: Index out of range.\n";

      exit(1);

    }

    for (int j = len; j > i; j--) {

      data[j] = data[j - 1];

    }

    data[i] = elem;

    len++;

  }

  void remove(int i) {

    if (isEmpty()) {

      std::cerr << "Error: The list is empty.\n";

      exit(1);

    }

    if (i < 0 || i >= len) {

      std::cerr << "Error: Index out of range.\n";

      exit(1);

    }

    for (int j = i; j < len - 1; j++) {

      data[j] = data[j + 1];

    }

    len--;

  }

private:

  T* data;

  int len;

  int max_size;

};

在上面的代码中,我们使用了模板类来实现了一个通用的顺序表。具体来说,我们通过定义一个类型为T的指针来保存数据,使用变量len来表示表长,变量max_size来表示顺序表的最大存储大小。在insert和remove函数中,我们分别使用了循环来实现元素的插入和删除操作。

接下来我们来看一些顺序表相关的使用示例。


#include <iostream>

#include "SeqList.hpp"

int main() {

  SeqList<int> s(10);

  std::cout << "Insert 0-9: ";

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

    s.insert(i, i);

  }

  for (int i = 0; i < s.length(); i++) {

    std::cout << s.at(i) << " ";

  }

  std::cout << std::endl;

  std::cout << "Remove number of 5: ";

  s.remove(5);

  for (int i = 0; i < s.length(); i++) {

    std::cout << s.at(i) << " ";

  }

  std::cout << std::endl;

  std::cout << "Is empty: " << (s.isEmpty() ? "yes" : "no") << std::endl;

  std::cout << "Is full: " << (s.isFull() ? "yes" : "no") << std::endl;

  return 0;

}

在上面的示例代码中,我们首先创建了一个SeqList 类型的对象s,然后通过调用insert函数向其中插入了0~9的整数,最后使用at函数遍历输出了顺序表中的所有元素。接着,我们使用remove函数从顺序表中删除了第5个元素,再次使用at函数遍历输出顺序表中的所有元素。最后,我们通过调用isEmpty和isFull函数来判断顺序表是否为空和是否已满,返回不同的结果。

通过本文的介绍,相信大家已经了解了如何使用C++编写顺序表的代码实现,希望能对大家有所帮助!

  
  

评论区

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