用c语言写出程序 程序要求如下 (1)通过键盘读取元素建立一个线性表;指定一个元素,在此元素之前插入一个新元素;指定一个元素,删除此元素。
时间: 2024-09-06 20:01:19 浏览: 39
有一个线性表(a1,a2,...,an),它存储在有附加表头结点的单链表中,写一个算法,求出该线性表中值为x的元素的序号。如果x
5星 · 资源好评率100%
在C语言中,创建一个线性表并进行元素的插入和删除操作,可以通过数组或链表来实现。以下是使用数组来实现的一个简单示例程序:
```c
#include <stdio.h>
#define MAXSIZE 100
// 线性表的最大长度
int maxsize = MAXSIZE;
// 线性表的当前长度
int length = 0;
// 线性表的数组表示
int list[MAXSIZE];
// 函数声明
void CreateList(int *list, int *length);
void InsertElement(int *list, int length, int pos, int newElement);
void DeleteElement(int *list, int *length, int pos);
int main() {
int pos, newElement, elementToDelete;
// 创建线性表
CreateList(list, &length);
// 插入元素
printf("请输入要插入的位置(从1开始)和新元素的值:");
scanf("%d %d", &pos, &newElement);
InsertElement(list, length, pos - 1, newElement); // 数组位置从0开始计算
length++; // 插入元素后,线性表长度增加
// 删除元素
printf("请输入要删除的元素的位置(从1开始):");
scanf("%d", &elementToDelete);
DeleteElement(list, &length, elementToDelete - 1); // 数组位置从0开始计算
// 打印结果
printf("线性表元素为:");
for (int i = 0; i < length; i++) {
printf("%d ", list[i]);
}
printf("\n");
return 0;
}
// 创建线性表
void CreateList(int *list, int *length) {
printf("请输入要创建的线性表的元素个数(不超过%d):", maxsize);
scanf("%d", length);
printf("请输入这些元素的值:");
for (int i = 0; i < *length; i++) {
scanf("%d", &list[i]);
}
}
// 在指定位置插入新元素
void InsertElement(int *list, int length, int pos, int newElement) {
if (pos < 0 || pos > length) {
printf("插入位置不合法。\n");
return;
}
if (length >= maxsize) {
printf("线性表已满,无法插入。\n");
return;
}
for (int i = length - 1; i >= pos; i--) {
list[i + 1] = list[i]; // 后移元素
}
list[pos] = newElement; // 插入新元素
}
// 删除指定位置的元素
void DeleteElement(int *list, int *length, int pos) {
if (pos < 0 || pos >= *length) {
printf("删除位置不合法。\n");
return;
}
for (int i = pos; i < *length - 1; i++) {
list[i] = list[i + 1]; // 前移元素
}
(*length)--; // 线性表长度减少
}
```
这个程序中,首先定义了一个最大长度为`MAXSIZE`的数组`list`来表示线性表。程序提供了三个函数:`CreateList`用于通过键盘输入创建线性表,`InsertElement`用于在指定位置插入一个新元素,`DeleteElement`用于删除指定位置的元素。注意,数组的下标是从0开始的,因此在输入位置时用户需要输入的值应减去1。
阅读全文