假设有一线性表元素存放在数组a[10]中,元素分别为1,2,3,4,5,6,7,8,9,10,请建立线性表的顺序存储结构顺序表L,请实现顺序表以下的基本运算并用相关数据进行测试,并编写主函数调用这些函数输出相应的结果。实现顺序表以下的基本运算:
时间: 2024-10-08 13:03:01 浏览: 44
线性表的顺序存储结构是一种最常见的数据结构,它通过连续的内存空间存储数据。在这个例子中,我们已经有一个数组`a[10]`包含了元素1到10,可以认为这是一个简单的顺序表。
为了实现顺序表的一些基本操作,我们可以创建以下几个函数:
1. **构造函数**:初始化顺序表,设置表头指针和表长度。
```c++
void createList(int* a, int n) {
head = &a[0]; // 将表头指向第一个元素
length = n; // 表长等于给定数组长度
}
```
2. **插入元素**:在指定位置插入新元素。
```c++
void insertElement(int* a, int pos, int value) {
if (pos < 1 || pos > length + 1) {
printf("Insertion position out of range.\n");
return;
}
for (int i = length; i >= pos; i--) {
a[i] = a[i - 1];
}
a[pos - 1] = value;
length++;
}
```
3. **删除元素**:从指定位置删除元素。
```c++
void deleteElement(int* a, int pos) {
if (pos < 1 || pos > length) {
printf("Deletion position out of range.\n");
return;
}
for (int i = pos; i < length - 1; i++) {
a[i] = a[i + 1];
}
length--;
}
```
4. **查找元素**:根据值查找元素的位置。
```c++
int searchElement(int* a, int value) {
for (int i = 0; i < length; i++) {
if (a[i] == value) {
return i + 1; // 返回元素在表中的实际位置(从1开始)
}
}
return -1; // 如果未找到,返回-1
}
```
5. **打印顺序表**:显示顺序表的内容。
```c++
void displayList(int* a) {
for (int i = 1; i <= length; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
```
主函数调用示例:
```c++
int main() {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(a) / sizeof(a[0]);
createList(a, n);
displayList(a); // 打印初始顺序表
insertElement(a, 3, 11); // 插入元素11在第3位置
displayList(a);
int index = searchElement(a, 3); // 查找元素3
if (index != -1) {
printf("Element 3 found at position %d\n", index);
} else {
printf("Element not found.\n");
}
deleteElement(a, 2); // 删除第2位置的元素
displayList(a);
return 0;
}
```
运行这个主函数,你会看到顺序表的不同操作效果。注意,这里没有考虑数组越界错误处理,实际编程时需要添加适当的边界检查。
阅读全文