定义一张顺序表(表的长度不超过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语言,在非c99模式下编译
时间: 2023-04-04 16:03:04 浏览: 97
第二章顺序表练习.txt
我可以回答这个问题。以下是实现顺序表基本操作的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");
}
int insertList(SeqList *L, int pos, int val) {
if (pos < 1 || pos > L->length + 1 || L->length == MAX_SIZE) {
return 0;
}
for (int i = L->length - 1; i >= pos - 1; i--) {
L->data[i + 1] = L->data[i];
}
L->data[pos - 1] = val;
L->length++;
return 1;
}
int main() {
SeqList L;
initList(&L);
createList(&L);
printList(L);
int pos, val;
scanf("%d %d", &pos, &val);
if (insertList(&L, pos, val)) {
printList(L);
} else {
printf("INSERT FAILED\n");
}
destroyList(&L);
return 0;
}
注意:本代码在非C99模式下编译。
阅读全文