21xrx.com
2024-11-05 18:53:27 Tuesday
登录
文章检索 我的文章 写文章
C++数据结构顺序表代码【附注释】
2023-07-11 14:54:48 深夜i     --     --
C++ 数据结构 顺序表 代码 注释

顺序表是一种常见的数据结构,也是入门编程者所学习的第一种数据结构。本文将为大家介绍C++语言下的顺序表数据结构代码,并附上详细的注释。

顺序表是一种线性表,在内存中以数组的形式存储。顺序表代码的实现需要定义一个包含元素类型和长度的结构体,如下所示:


#define MAXSIZE 100 // 定义最大长度

typedef struct {

  int data[MAXSIZE]; // 存储元素的数组

  int length; // 当前长度

} SqList; // 顺序表的结构体

其中,`MAXSIZE` 定义了顺序表的最大长度,`data` 定义了存储元素的数组,`length` 定义了当前顺序表的长度。

接下来,我们可以实现顺序表的几个基本操作,如初始化、插入、删除和查找元素等。下面是完整的 C++ 代码实现,带有详细的注释。


#include <iostream>

using namespace std;

#define MAXSIZE 100 // 定义最大长度

typedef struct {

  int data[MAXSIZE]; // 存储元素的数组

  int length; // 当前长度

} SqList; // 顺序表的结构体

// 初始化顺序表

bool initList(SqList &L)

  L.length = 0; // 初始长度为0

  return true;

// 插入元素

bool listInsert(SqList &L, int i, int e) {

  if (i < 1 || i > L.length + 1 || L.length == MAXSIZE) // 判断插入位置是否合法

    return false;

  

  for (int j = L.length; j >= i; j--) { // 将第i个位置及后面的元素后移

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

  }

  L.data[i - 1] = e; // 插入新元素

  L.length++; // 长度加1

  return true;

}

// 删除元素

bool listDelete(SqList &L, int i, int &e) {

  if (i < 1 || i > L.length) // 判断删除位置是否合法

    return false;

  

  e = L.data[i - 1]; // 将删除元素的值传递给e

  for (int j = i - 1; j < L.length - 1; j++) { // 将第i个位置之后的元素前移

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

  }

  L.length--; // 长度减1

  return true;

}

// 获取元素

int getElem(SqList L, int i) {

  return L.data[i - 1]; // 返回第i个元素的值

}

// 查找元素

int locateElem(SqList L, int e) {

  for (int i = 0; i < L.length; i++) { // 依次查找每个元素

    if (L.data[i] == e) { // 找到元素

      return i + 1;

    }

  }

  return 0; // 未找到元素,返回0

}

int main() {

  SqList L; // 声明顺序表 L

  int e; // 被删除元素的值

  initList(L); // 初始化顺序表

  listInsert(L, 1, 6); // 在第1个位置插入元素6

  listInsert(L, 2, 12); // 在第2个位置插入元素12

  listInsert(L, 3, 3); // 在第3个位置插入元素3

  listInsert(L, 4, 9); // 在第4个位置插入元素9

  cout << "顺序表的长度为:" << L.length << endl;

  cout << "第3个位置的元素为:" << getElem(L, 3) << endl;

  cout << "元素12在顺序表中的位置为:" << locateElem(L, 12) << endl;

  if (listDelete(L, 2, e)) // 删除第2个位置的元素

    cout << "已删除第2个位置的元素

  cout << "顺序表的长度为:" << L.length << endl;

  return 0;

}

以上就是C++语言下的顺序表数据结构代码,希望本文能够帮助读者更好地理解顺序表的实现和使用。

  
  

评论区

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