c语言顺序表的创建、查找、插入、删除、输出、合并操作的运行代码
时间: 2023-10-19 15:16:16 浏览: 104
以下是C语言顺序表的创建、查找、插入、删除、输出、合并操作的运行代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int data[MAXSIZE]; // 顺序表存储数据的数组
int length; // 顺序表当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 插入元素
int ListInsert(SqList *L, int pos, int elem) {
if (pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) {
return 0; // 插入位置不合法或顺序表已满
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1]; // 从后往前移动元素
}
L->data[pos - 1] = elem; // 插入新元素
L->length++; // 长度加1
return 1;
}
// 删除元素
int ListDelete(SqList *L, int pos) {
if (pos < 1 || pos > L->length) {
return 0; // 删除位置不合法
}
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i]; // 从前往后移动元素
}
L->length--; // 长度减1
return 1;
}
// 查找元素
int ListSearch(SqList *L, int elem) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return i + 1; // 返回元素在顺序表中的位置
}
}
return 0; // 未找到元素
}
// 输出顺序表
void PrintList(SqList *L) {
for (int i = 0; i < L->length; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
// 合并两个顺序表
SqList MergeList(SqList *L1, SqList *L2) {
SqList L3;
InitList(&L3);
int i = 0, j = 0;
while (i < L1->length && j < L2->length) {
if (L1->data[i] <= L2->data[j]) {
ListInsert(&L3, L3.length + 1, L1->data[i]);
i++;
} else {
ListInsert(&L3, L3.length + 1, L2->data[j]);
j++;
}
}
while (i < L1->length) {
ListInsert(&L3, L3.length + 1, L1->data[i]);
i++;
}
while (j < L2->length) {
ListInsert(&L3, L3.length + 1, L2->data[j]);
j++;
}
return L3;
}
int main() {
SqList L1, L2, L3;
InitList(&L1);
InitList(&L2);
InitList(&L3);
// 测试插入元素
ListInsert(&L1, 1, 3);
ListInsert(&L1, 2, 5);
ListInsert(&L1, 3, 7);
ListInsert(&L2, 1, 2);
ListInsert(&L2, 2, 4);
ListInsert(&L2, 3, 6);
printf("L1: ");
PrintList(&L1);
printf("L2: ");
PrintList(&L2);
// 测试删除元素
ListDelete(&L1, 2);
printf("L1: ");
PrintList(&L1);
// 测试查找元素
int pos = ListSearch(&L2, 4);
if (pos) {
printf("4 is found in L2 at position %d\n", pos);
} else {
printf("4 is not found in L2\n");
}
// 测试合并顺序表
L3 = MergeList(&L1, &L2);
printf("L3: ");
PrintList(&L3);
return 0;
}
```
注意:本代码仅供参考,实际使用时需根据实际情况进行修改。
阅读全文