、整数顺序表的建立、查找、插入、删除、输出程序(线性表的顺序存储实现),表中不允许有重复数据
时间: 2023-10-19 19:15:55 浏览: 116
下面是基于C语言实现的整数顺序表的建立、查找、插入、删除、输出程序,使用线性表的顺序存储实现,表中不允许有重复数据。
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 在顺序表中查找元素x的位置,返回下标,若不存在返回-1
int LocateElem(SqList L, int x) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == x) {
return i;
}
}
return -1;
}
// 在顺序表中插入元素x
int ListInsert(SqList *L, int x) {
if (L->length == MAXSIZE) { // 判断顺序表是否已满
return 0;
}
if (LocateElem(*L, x) != -1) { // 判断元素是否已存在
return 0;
}
L->data[L->length++] = x; // 将元素添加到顺序表末尾
return 1;
}
// 在顺序表中删除元素x
int ListDelete(SqList *L, int x) {
int pos = LocateElem(*L, x);
if (pos == -1) { // 判断元素是否存在
return 0;
}
for (int i = pos; i < L->length - 1; i++) {
L->data[i] = L->data[i+1]; // 将元素前移
}
L->length--; // 顺序表长度减1
return 1;
}
// 输出顺序表中的所有元素
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
// 测试插入元素
ListInsert(&L, 1);
ListInsert(&L, 3);
ListInsert(&L, 5);
ListInsert(&L, 7);
ListInsert(&L, 9);
ListInsert(&L, 2);
ListInsert(&L, 4);
ListInsert(&L, 6);
ListInsert(&L, 8);
ListInsert(&L, 10);
// 输出顺序表中的元素
printf("顺序表中的元素:");
PrintList(L);
// 测试查找元素
int pos = LocateElem(L, 7);
if (pos != -1) {
printf("元素7的位置为%d\n", pos);
} else {
printf("元素7不存在\n");
}
// 测试删除元素
ListDelete(&L, 3);
printf("删除元素3后,顺序表中的元素:");
PrintList(L);
return 0;
}
```
阅读全文
相关推荐
















