21xrx.com
2024-11-22 10:06:20 Friday
登录
文章检索 我的文章 写文章
C++顺序表删除重复元素
2023-07-03 19:14:54 深夜i     --     --
C++ 顺序表 删除 重复元素

C++是一种广泛使用的编程语言,可以应用于多个领域。在数据结构中,顺序表是一种重要的数据结构。顺序表具有随机访问和高效的元素插入和删除操作。但是,在实际应用中,顺序表中可能会存在重复元素,这会对操作和算法产生一定的影响。因此,本文将介绍如何使用C++编写顺序表删除重复元素的程序。

使用C++实现顺序表需要使用数组来存储元素,并用一个变量来记录元素的个数。对于顺序表中的重复元素,可以使用一个for循环来进行遍历,并使用if语句来判断是否与前面的元素相等。如果相等,则将元素删除。具体实现如下:


#include <iostream>

using namespace std;

const int MAXSIZE = 100;

typedef int DataType;

typedef struct {

  DataType data[MAXSIZE];

  int len;

} SeqList;

/* 初始化顺序表 */

void InitSeqList(SeqList &L)

  L.len = 0;

/* 插入元素 */

bool Insert(SeqList &L, DataType x) {

  if (L.len == MAXSIZE)

    cout << "顺序表已满" << endl;

    return false;

  

  L.data[L.len++] = x;

  return true;

}

/* 删除重复元素 */

void DeleteDup(SeqList &L) {

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

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

      if (L.data[i] == L.data[j]) {

        for (int k = j; k < L.len - 1; k++)

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

        L.len--;

        j--;

      }

    }

  }

}

/* 输出顺序表 */

void PrintSeqList(SeqList L) {

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

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

  cout << endl;

}

int main() {

  SeqList L;

  InitSeqList(L);

  Insert(L, 2);

  Insert(L, 5);

  Insert(L, 3);

  Insert(L, 2);

  Insert(L, 1);

  Insert(L, 5);

  cout << "顺序表:" << endl;

  PrintSeqList(L);

  DeleteDup(L);

  cout << "删除重复元素后的顺序表:" << endl;

  PrintSeqList(L);

  return 0;

}

在上面的程序中,首先定义了一个SeqList结构体,包含一个数组data和一个元素个数len。初始化顺序表、插入元素、输出顺序表等函数比较简单,这里不再赘述。

主要实现函数是DeleteDup函数。该函数通过两个for循环进行遍历,从第一个元素开始,依次与后面的元素进行比较。如果存在相等的元素,则将后面的元素删除,并将元素个数len减1。由于删除元素后后面的元素位置会向前移动,因此内部循环变量j需要减1,才能从当前的位置开始与前面的元素进行比较。

上述程序可以通过C++编译器编译并运行。在运行时,首先会输出插入的顺序表,然后进行删除重复元素操作,最后输出删除重复元素后的顺序表。运行结果如下:


顺序表:

2 5 3 2 1 5

删除重复元素后的顺序表:

2 5 3 1

通过上述内容,我们可以看到,使用C++编写顺序表删除重复元素的程序是比较简单的。但需要注意的是,删除元素后位置会发生变化,因此需要注意循环变量的使用和更新。同时,该程序只能删除相邻的重复元素,对于距离较远的重复元素需要使用其他算法进行处理。

  
  

评论区

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