用c语言写一个程序:有若干串长度为n的整数,现要求使用顺序表的方法编写程序,若这串数中存在值相同的数, 则只保留一个,最终按照原来的顺序将这串数输出
时间: 2023-02-11 07:17:40 浏览: 139
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct SeqList {
int data[MAX_SIZE];
int length;
} SeqList;
SeqList* init_seq_list() {
SeqList *l = (SeqList*)malloc(sizeof(SeqList));
l->length = 0;
return l;
}
void push_back(SeqList *l, int value) {
l->data[l->length++] = value;
}
int find(SeqList *l, int value) {
for (int i = 0; i < l->length; i++) {
if (l->data[i] == value) {
return i;
}
}
return -1;
}
void remove_at(SeqList *l, int index) {
for (int i = index; i < l->length - 1; i++) {
l->data[i] = l->data[i + 1];
}
l->length--;
}
int main() {
SeqList *l = init_seq_list();
int n;
printf("请输入长度n:");
scanf("%d", &n);
printf("请输入 %d 个整数:\n", n);
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
push_back(l, x);
}
for (int i = 0; i < l->length; i++) {
int value = l->data[i];
int index = find(l, value);
if (index != i) {
remove_at(l, index);
i--;
}
}
printf("去重后的数组: ");
for (int i = 0; i < l->length; i++) {
printf("%d ", l->data[i]);
}
printf("\n");
free(l);
return 0;
}
```
说明:
- `init_seq_list` 函数用于初始化顺序表
- `push_back` 函数用于在顺序表尾部插入一个整数
- `find` 函数用于在顺序表中查找给定值的第一个下标
- `remove_at` 函数用于删除顺序表中给定下标的元素
程序的主要思路是遍历顺序表,如果当前元素的
阅读全文