21xrx.com
2024-11-05 19:38:23 Tuesday
登录
文章检索 我的文章 写文章
用C++实现顺序表
2023-07-09 18:07:15 深夜i     --     --
C++ 实现 顺序表

顺序表是一种经典的数据结构,用于存储一组顺序排列的数据元素。使用C++语言来实现顺序表可以让程序员更容易地操作数据元素和进行各种数据处理,下面我们就来介绍一下如何用C++实现顺序表。

1.定义顺序表结构体

顺序表结构体是用来存储数据元素的,我们可以根据需要定义不同的数据类型。这里我们以整型为例,定义一个包含了元素个数和数组的结构体:


struct SeqList{

  int size;

  int data[MAXSIZE];

};

其中 `MAXSIZE` 为数组大小,可以根据需要进行调整。

2.初始化顺序表

在定义完顺序表结构体后,我们需要初始化顺序表,即将 `size` 置为零。可以定义一个函数来完成初始化:


void init(SeqList &L)

  L.size = 0;

3.插入操作

插入操作是向顺序表中添加元素的过程,可以定义一个函数来实现:


bool insert(SeqList &L, int pos, int val){

  // 判断插入位置是否合法

  if(pos < 1 || pos > L.size+1)

    return false;

  // 判断顺序表是否已满

  if(L.size >= MAXSIZE)

    return false;

  // 移动元素位置

  for(int i = L.size; i >= pos; i--)

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

  // 插入新元素

  L.data[pos-1] = val;

  L.size++;

  return true;

}

其中 `pos` 表示插入位置, `val` 表示插入的元素值。

4.删除操作

删除操作是从顺序表中删除特定位置的元素,同样可以定义一个函数来实现:


bool remove(SeqList &L, int pos){

  // 判断删除位置是否合法

  if(pos < 1 || pos > L.size)

    return false;

  // 移动元素位置

  for(int i = pos; i < L.size; i++)

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

  L.size--;

  return true;

}

其中 `pos` 表示删除位置。

5.查找操作

查找操作是在顺序表中查找特定元素的过程,可以定义一个函数来实现:


int search(SeqList L, int val){

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

    if(L.data[i] == val)

      return i+1;

  }

  return 0;

}

其中 `val` 表示待查找的元素值。

6.遍历操作

遍历操作是依次访问顺序表中的所有元素,可以定义一个函数来实现:


void traverse(SeqList L){

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

    cout << L.data[i] << " ";

  }

  cout << endl;

}

7.完整代码实现

结合以上操作,我们可以将完整代码实现如下:


#include<iostream>

using namespace std;

const int MAXSIZE = 100;

struct SeqList{

  int size;

  int data[MAXSIZE];

};

void init(SeqList &L){

  L.size = 0;

}

bool insert(SeqList &L, int pos, int val){

  if(pos < 1 || pos > L.size+1)

    return false;

  if(L.size >= MAXSIZE)

    return false;

  for(int i = L.size; i >= pos; i--)

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

  L.data[pos-1] = val;

  L.size++;

  return true;

}

bool remove(SeqList &L, int pos){

  if(pos < 1 || pos > L.size)

    return false;

  for(int i = pos; i < L.size; i++)

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

  L.size--;

  return true;

}

int search(SeqList L, int val){

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

    if(L.data[i] == val)

      return i+1;

  }

  return 0;

}

void traverse(SeqList L){

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

    cout << L.data[i] << " ";

  }

  cout << endl;

}

int main(){

  SeqList mylist;

  init(mylist);

  insert(mylist, 1, 10);

  insert(mylist, 2, 20);

  insert(mylist, 3, 30);

  cout << "顺序表元素为:";

  traverse(mylist);

  remove(mylist, 2);

  cout << "删除后的顺序表元素为:";

  traverse(mylist);

  int pos = search(mylist, 10);

  if(pos)

    cout << "10在顺序表中的位置是:" << pos << endl;

  else

    cout << "10不在顺序表中" << endl;

  return 0;

}

以上就是用C++实现顺序表的全部内容,通过对顺序表各种操作的实现,可以更好地理解顺序表的基本原理和应用。

  
  

评论区

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