定义一张顺序表(表的长度不超过100),表的元素值是由非负整数,构造表时以-1作为输入结束符,例如输入序列12 18 23 37 89 -1,顺序表中数据为(12, 18, 23, 37, 89)。编写程序实现如下基本操作: (1) 初始化顺序表; (2) 销毁顺序表 (3) 构造顺序表; (4) 判空; (5) 判满; (6) 输出表中所有元素值; (7) 表中插入一个元素; 【输入形式】第一行输入顺序表的元素值,以-1作为结束;第二行输入插入的位置和元素值 【输出形式】第一行输出初始构造表的元素值,以空格分开;第二行根据插入是否成功输出结果,如果插入成功,则输出插入元素后的表元素值,以空格分开,否则输出INSERT FAILED 【样例输入1】 12 18 23 37 89 -1 3 20 【样例输出1】 12 18 23 37 89 12 18 20 23 37 89 【样例说明1】输入序列是12 18 23 37 89 -1,除-1以外只有5个元素值12 18 23 37 89,所以构造的线性表是(12, 18, 23, 37, 89)。将20插入第3个位置,是合法的,插入后的线性表是(12, 18, 20, 23, 37, 89)。使用c语言
时间: 2023-04-04 12:02:57 浏览: 142
我可以回答这个问题。以下是基本操作的C语言实现:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 销毁顺序表
void DestroyList(SeqList *L) {
L->length = 0;
}
// 构造顺序表
void CreateList(SeqList *L) {
int num;
scanf("%d", &num);
while (num != -1 && L->length < MAX_SIZE) {
L->data[L->length++] = num;
scanf("%d", &num);
}
}
// 判空
int IsEmpty(SeqList L) {
return L.length == 0;
}
// 判满
int IsFull(SeqList L) {
return L.length == MAX_SIZE;
}
// 输出表中所有元素值
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 表中插入一个元素
void InsertList(SeqList *L, int pos, int num) {
if (pos < 1 || pos > L->length + 1 || L->length == MAX_SIZE) {
printf("INSERT FAILED\n");
return;
}
for (int i = L->length - 1; i >= pos - 1; i--) {
L->data[i + 1] = L->data[i];
}
L->data[pos - 1] = num;
L->length++;
PrintList(*L);
}
int main() {
SeqList L;
InitList(&L);
CreateList(&L);
PrintList(L);
int pos, num;
scanf("%d%d", &pos, &num);
InsertList(&L, pos, num);
return 0;
}
阅读全文