数据结构考题 - 顺序表的插入pta
时间: 2025-01-14 15:31:54 浏览: 50
### 关于顺序表插入操作的考试题目或练习题
#### 插入操作实现
对于顺序表中的插入操作,通常需要考虑边界条件以及数组越界等问题。下面是一个典型的顺序表插入操作 `ListInsert` 的实现:
```c
bool ListInsert(SeqList *list, int pos, ElemType e) {
if (pos < 0 || pos > list->last + 1) { // 判断位置合法性
printf("Invalid position!\n");
return false;
}
if (list->last >= N - 1) { // 判断是否已满
printf("The list is full!\n");
return false;
}
for (int i = list->last; i >= pos; i--) { // 向后移动元素
list->data[i + 1] = list->data[i];
}
list->data[pos] = e; // 插入新元素
list->last++; // 更新最后一个有效元素的位置
return true;
}
```
此代码实现了在指定位置插入一个新元素的功能,并处理了可能遇到的各种异常情况。
#### 测试案例
为了验证上述函数的正确性,可以编写如下测试用例:
```c
#include <stdio.h>
#define N 10
typedef int ElemType;
typedef struct {
ElemType data[N];
int last;
} SeqList;
void PrintList(SeqList* list) {
for (int i = 0; i <= list->last; ++i) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 假设已经定义好了InitList() 和 TraverseList()
int main() {
SeqList* myList = InitList();
ListInsert(myList, 0, 5);
ListInsert(myList, 1, 7);
PrintList(myList);
return 0;
}
```
这段程序创建了一个新的顺序表实例并尝试在其开头和第二个位置分别插入两个整数,最后打印整个列表的内容以确认插入成功[^1]。
阅读全文
相关推荐















