c语言实现顺序表基本运算,用顺序表存储L1L2合成一个有序表L
时间: 2024-06-15 16:05:51 浏览: 169
顺序表是一种线性表的存储结构,可以使用数组来实现。C语言中可以通过定义结构体和数组来实现顺序表的基本运算。下面是C语言实现顺序表基本运算的步骤:
1. 定义顺序表的结构体:
```c
#define MAX_SIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAX_SIZE]; // 用数组存储数据元素
int length; // 当前顺序表的长度
} SeqList;
```
2. 初始化顺序表:
```c
void init(SeqList *L) {
L->length = 0; // 将顺序表的长度初始化为0
}
```
3. 插入元素到顺序表:
```c
int insert(SeqList *L, int elem) {
if (L->length >= MAX_SIZE) {
return -1; // 顺序表已满,插入失败
}
L->data[L->length] = elem; // 将元素插入到顺序表的末尾
L->length++; // 顺序表长度加1
return 0; // 插入成功
}
```
4. 合并两个有序顺序表:
```c
void merge(SeqList *L1, SeqList *L2, SeqList *L) {
int i = 0, j = 0, k = 0;
while (i < L1->length && j < L2->length) {
if (L1->data[i] <= L2->data[j]) {
L->data[k++] = L1->data[i++];
} else {
L->data[k++] = L2->data[j++];
}
}
while (i < L1->length) {
L->data[k++] = L1->data[i++];
}
while (j < L2->length) {
L->data[k++] = L2->data[j++];
}
L->length = k; // 更新合并后顺序表的长度
}
```
5. 示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
void init(SeqList *L) {
L->length = 0;
}
int insert(SeqList *L, int elem) {
if (L->length >= MAX_SIZE) {
return -1;
}
L->data[L->length] = elem;
L->length++;
return 0;
}
void merge(SeqList *L1, SeqList *L2, SeqList *L) {
int i = 0, j = 0, k = 0;
while (i < L1->length && j < L2->length) {
if (L1->data[i] <= L2->data[j]) {
L->data[k++] = L1->data[i++];
} else {
L->data[k++] = L2->data[j++];
}
}
while (i < L1->length) {
L->data[k++] = L1->data[i++];
}
while (j < L2->length) {
L->data[k++] = L2->data[j++];
}
L->length = k;
}
int main() {
SeqList L1, L2, L;
init(&L1);
init(&L2);
init(&L);
insert(&L1, 1);
insert(&L1, 3);
insert(&L1, 5);
insert(&L2, 2);
insert(&L2, 4);
insert(&L2, 6);
merge(&L1, &L2, &L);
printf("合并后的有序表L:");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
阅读全文