建一个顺序存储的线性表,在给定的位置插入给定的元素。先输入线性表中数字的个数 n ,再输入 n 个数字,之后输入要插入的元素的位置和值(注意先输入位置,再输入值),最后将插入元素 后的线性表输出。用C语言实现
时间: 2024-10-29 13:25:09 浏览: 22
线性表的建立、插入和删除
5星 · 资源好评率100%
在C语言中,你可以通过动态内存分配和数组操作来实现这个功能。下面是一个简单的示例,展示了如何在一个顺序存储的整型线性表中,在指定位置插入新的元素:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int* elements;
int size;
int capacity;
} LinearList;
// 初始化线性表
void init(LinearList* list) {
list->elements = (int*)malloc(MAX_SIZE * sizeof(int));
list->size = 0;
list->capacity = MAX_SIZE;
}
// 插入元素
void insertAtPosition(LinearList* list, int position, int value) {
if (position < 0 || position > list->size + 1) {
printf("Error: Invalid position.\n");
return;
}
// 如果已经达到最大容量并且需要扩容
if (list->size == list->capacity) {
list->capacity *= 2;
list->elements = (int*)realloc(list->elements, list->capacity * sizeof(int));
}
// 将元素移动到右侧,留出空间
for (int i = list->size; i >= position; i--) {
list->elements[i] = list->elements[i - 1];
}
// 插入新元素
list->elements[position - 1] = value;
list->size++;
}
// 打印线性表
void printList(LinearList* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->elements[i]);
}
printf("\n");
}
int main() {
LinearList list;
int n, position, value;
// 输入元素个数
scanf("%d", &n);
init(&list);
// 输入并添加元素
for (int i = 0; i < n; i++) {
scanf("%d", &list.elements[i]);
}
// 插入元素
scanf("%d %d", &position, &value);
insertAtPosition(&list, position, value);
// 输出插入后的线性表
printList(&list);
free(list.elements); // 清理内存
return 0;
}
```
在这个程序中,用户首先输入线性表的长度,然后依次输入元素。接着,用户会被提示插入一个新的元素,包括其位置和值。插入操作会确保列表的大小随着需求调整,并将所有后续的元素向右移动。最后,打印出插入元素后的线性表。
阅读全文