下面是一个示例的有序顺序表插入函数的实现:
#define MAX_SIZE 100
typedef int DataType;
typedef struct {
DataType data[MAX_SIZE];
int length;
} SeqList;
int InsertSeqListSorted(SeqList *sl, DataType x) {
if (sl->length >= MAX_SIZE) { // 防止溢出
return 0; // 插入失败
}
int i, j;
for (i = 0; i < sl->length; i++) {
if (x <= sl->data[i]) { // 找到插入位置
break;
}
}
for (j = sl->length - 1; j >= i; j--) {
sl->data[j+1] = sl->data[j]; // 后移元素
}
sl->data[i] = x; // 插入新元素
sl->length++; // 长度加一
return 1; // 插入成功
}
该函数会遍历已经排序好的顺序表,找到第一个大于等于待插入元素 x 的位置,并将其后面的所有元素都后移一位。然后将 x 插入到该位置上,最后将顺序表的长度加一。如果顺序表已满,则插入失败。
内容由零声教学AI助手提供,问题来源于学员提问