线性表的建立及基本操作。1.建立一个含有n个元素的顺序表,元素可以为整形,浮点型,也可以是结构体类型,选其中一种。 2.对1中建立的顺序表第i个位置进行数据插入操作。c语言
时间: 2024-02-16 15:00:33 浏览: 24
1. 建立一个含有n个元素的顺序表,元素为整型:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int* data; // 指向数据的指针
int length; // 当前表长
} SqList; // 顺序表类型定义
// 初始化顺序表
void initList(SqList* L, int n) {
L->data = (int*) malloc(sizeof(int) * MAXSIZE); // 动态分配内存
L->length = n; // 初始表长为n
for (int i = 0; i < n; i++) { // 依次输入n个元素
printf("请输入第%d个元素:", i + 1);
scanf("%d", &L->data[i]);
}
}
// 输出顺序表
void printList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n;
printf("请输入顺序表长度:");
scanf("%d", &n);
initList(&L, n);
printf("顺序表内容为:");
printList(L);
return 0;
}
```
2. 对1中建立的顺序表第i个位置进行数据插入操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int* data; // 指向数据的指针
int length; // 当前表长
} SqList; // 顺序表类型定义
// 初始化顺序表
void initList(SqList* L, int n) {
L->data = (int*) malloc(sizeof(int) * MAXSIZE); // 动态分配内存
L->length = n; // 初始表长为n
for (int i = 0; i < n; i++) { // 依次输入n个元素
printf("请输入第%d个元素:", i + 1);
scanf("%d", &L->data[i]);
}
}
// 输出顺序表
void printList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 在顺序表的第i个位置插入元素x
int insertList(SqList* L, int x, int i) {
if (i < 1 || i > L->length + 1) { // 插入位置不合法
return 0;
}
if (L->length >= MAXSIZE) { // 顺序表已满
return 0;
}
for (int j = L->length; j >= i; j--) { // 从后往前依次后移
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = x; // 将x插入到第i个位置
L->length++; // 表长加1
return 1;
}
int main() {
SqList L;
int n, x, i;
printf("请输入顺序表长度:");
scanf("%d", &n);
initList(&L, n);
printf("顺序表内容为:");
printList(L);
printf("请输入要插入的元素:");
scanf("%d", &x);
printf("请输入要插入的位置:");
scanf("%d", &i);
if (insertList(&L, x, i)) {
printf("插入成功,当前顺序表为:");
printList(L);
} else {
printf("插入失败!");
}
return 0;
}
```