用C语言写一个程序:输入一个线性表,当机器显示表长时,可以键入一个小于100的整数,然后根据功能表做: 1:表示有序表的插入; 2:表示有序表的删除; 3:表示存新值; 4:表示检索第i个元素; 5:表示查表长;(不用指针)
时间: 2024-09-24 15:06:55 浏览: 34
下面是一个简单的C语言程序示例,用于实现上述描述的功能。这个程序使用数组来表示线性表,因为题目要求不需要使用指针。请注意,由于C语言不像一些现代编程语言那样支持动态内存管理,所以我们需要预先确定线性表的最大长度。
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义结构体存储元素及其索引
typedef struct {
int value;
int index;
} Node;
int main() {
Node list[MAX_SIZE] = {0}; // 初始化数组为全0
int size = 0; // 表长
int choice, num;
printf("Enter the length of the table (up to %d): ", MAX_SIZE);
scanf("%d", &size);
while (size > 0) {
switch (size--) {
case 0:
printf("Invalid input. Please enter a valid number.\n");
break;
default:
printf("Enter your operation number (1-5): ");
scanf("%d", &choice);
break;
}
switch (choice) {
case 1: // 插入
printf("Enter value to insert: ");
scanf("%d", &num);
if (size < MAX_SIZE - 1) {
list[size].value = num;
list[size].index = size + 1;
} else {
printf("Table is full.\n");
}
break;
case 2: // 删除
printf("Enter the position to delete: ");
scanf("%d", &num);
if (num <= size && num > 0) {
for (int i = num - 1; i < size; i++) {
list[i] = list[i + 1];
}
size--;
} else {
printf("Invalid position.\n");
}
break;
case 3: // 存新值
printf("Enter new value: ");
scanf("%d", &num);
list[size].value = num;
list[size].index = size + 1;
break;
case 4: // 检索第i个元素
printf("Enter index to retrieve: ");
scanf("%d", &num);
if (num >= 1 && num <= size) {
printf("Element at position %d is: %d\n", num, list[num - 1].value);
} else {
printf("Invalid index.\n");
}
break;
case 5: // 查表长
printf("The current length of the table is: %d\n", size);
break;
default:
printf("Invalid choice. Please choose from 1 to 5.\n");
break;
}
}
return 0;
}
```
阅读全文