c++建立顺序表,并统计表中重复元素个数,并输出结果
时间: 2024-05-05 12:18:09 浏览: 78
建立一个学生链表
好的,下面是代码实现:
```c++
#include <iostream>
using namespace std;
const int N = 1005; // 顺序表的最大长度
// 定义结构体SeqList
typedef struct {
int data[N]; // 存储数据的数组
int len; // 当前顺序表长度
} SeqList;
// 初始化顺序表
void InitList(SeqList &L) {
L.len = 0; // 初始长度为0
}
// 在顺序表末尾添加一个元素
bool AddElement(SeqList &L, int x) {
if (L.len == N) { // 判断顺序表是否已满
return false; // 已满,添加失败
}
L.data[L.len++] = x; // 在末尾添加x,并更新长度
return true; // 添加成功
}
// 统计重复元素个数
int CountRepeat(SeqList L) {
int cnt = 0; // 初始计数器为0
bool vis[N] = {false}; // 标记数组,初始所有元素都未出现过
for (int i = 0; i < L.len; i++) { // 遍历顺序表中的元素
if (!vis[L.data[i]]) { // 如果该元素未出现过
vis[L.data[i]] = true; // 标记该元素出现过
for (int j = i + 1; j < L.len; j++) { // 继续遍历后面的元素
if (L.data[j] == L.data[i]) { // 如果出现了相同的元素
cnt++; // 重复计数器加1
}
}
}
}
return cnt; // 返回重复元素个数
}
int main() {
SeqList L;
InitList(L);
int n, x;
cout << "请输入顺序表的长度n = ";
cin >> n;
cout << "请输入" << n << "个元素:";
for (int i = 0; i < n; i++) {
cin >> x;
AddElement(L, x);
}
int cnt = CountRepeat(L);
cout << "重复元素个数为:" << cnt << endl;
return 0;
}
```
这段代码实现了建立一个长度为n的顺序表,并统计表中重复元素个数。在CodeBlocks等C++环境下编译通过后,可进行测试。注意避免重复元素带来的误差。
阅读全文