c语言完整实现顺序表的创建、插入、删除、查找、排序代码
时间: 2023-10-19 09:24:31 浏览: 128
以下是C语言顺序表的完整实现代码,包括创建、插入、删除、查找和排序功能:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int data[MAXSIZE]; // 存储数组
int length; // 当前长度
} SqList; // 定义顺序表结构体
// 初始化顺序表
void init(SqList *L) {
L->length = 0;
}
// 向顺序表中插入元素
int insert(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++;
return 1; // 插入成功
}
// 从顺序表中删除元素
int delete(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--;
return 1; // 删除成功
}
// 在顺序表中查找元素
int search(SqList L, int elem) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == elem) {
return i+1; // 返回元素在顺序表中的位置
}
}
return 0; // 查找失败
}
// 对顺序表进行冒泡排序
void sort(SqList *L) {
for (int i = 0; i < L->length-1; i++) {
for (int j = 0; j < L->length-i-1; j++) {
if (L->data[j] > L->data[j+1]) {
int temp = L->data[j];
L->data[j] = L->data[j+1];
L->data[j+1] = temp;
}
}
}
}
// 打印顺序表中的所有元素
void printList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
init(&L);
insert(&L, 1, 2);
insert(&L, 2, 1);
insert(&L, 3, 5);
insert(&L, 4, 3);
printf("插入元素后:");
printList(L);
delete(&L, 3);
printf("删除元素后:");
printList(L);
int pos = search(L, 5);
if (pos) {
printf("元素5在顺序表中的位置为%d\n", pos);
} else {
printf("元素5不在顺序表中\n");
}
sort(&L);
printf("排序后的顺序表:");
printList(L);
return 0;
}
```
以上代码实现了顺序表的常用操作,可以通过调用相应的函数来实现表的创建、插入、删除、查找和排序等功能。
阅读全文