C语言顺序表实现及操作393
简介
顺序表是一种基本的数据结构,它将数据按顺序存储在一段连续的内存空间中。在C语言中,顺序表可以使用数组来实现。本文将详细介绍C语言中顺序表的实现和各种操作。
顺序表实现
在C语言中,顺序表可以由以下结构表示:```c
#include
#include
typedef struct {
int size;
int max_size;
int *arr;
} SeqList;
```
* `size`:表示顺序表中元素的个数。
* `max_size`:表示顺序表的最大容量。
* `arr`:指向顺序表中元素数组的指针。
基本的顺序表操作
创建顺序表
```c
SeqList *create_seq_list(int max_size) {
SeqList *list = (SeqList *)malloc(sizeof(SeqList));
list->size = 0;
list->max_size = max_size;
list->arr = (int *)malloc(sizeof(int) * max_size);
return list;
}
```
获取顺序表长度
```c
int get_seq_list_length(SeqList *list) {
return list->size;
}
```
判断顺序表是否为空
```c
int is_seq_list_empty(SeqList *list) {
return list->size == 0;
}
```
插入元素
```c
int insert_seq_list(SeqList *list, int index, int value) {
if (index < 0 || index > list->size) {
return -1;
}
for (int i = list->size; i > index; i--) {
list->arr[i] = list->arr[i - 1];
}
list->arr[index] = value;
list->size++;
return 0;
}
```
删除元素
```c
int delete_seq_list(SeqList *list, int index) {
if (index < 0 || index >= list->size) {
return -1;
}
for (int i = index; i < list->size - 1; i++) {
list->arr[i] = list->arr[i + 1];
}
list->size--;
return 0;
}
```
获取元素
```c
int get_seq_list_element(SeqList *list, int index) {
if (index < 0 || index >= list->size) {
return -1;
}
return list->arr[index];
}
```
进阶操作
顺序表扩容
```c
int expand_seq_list(SeqList *list, int new_max_size) {
if (new_max_size max_size) {
return -1;
}
int *new_arr = (int *)realloc(list->arr, sizeof(int) * new_max_size);
if (new_arr == NULL) {
return -1;
}
list->arr = new_arr;
list->max_size = new_max_size;
return 0;
}
```
顺序表缩容
```c
int shrink_seq_list(SeqList *list, int new_max_size) {
if (new_max_size >= list->max_size) {
return -1;
}
int *new_arr = (int *)realloc(list->arr, sizeof(int) * new_max_size);
if (new_arr == NULL) {
return -1;
}
list->arr = new_arr;
list->max_size = new_max_size;
return 0;
}
```
顺序表查找
```c
int find_seq_list(SeqList *list, int value) {
for (int i = 0; i < list->size; i++) {
if (list->arr[i] == value) {
return i;
}
}
return -1;
}
```
顺序表合并
```c
SeqList *merge_seq_list(SeqList *list1, SeqList *list2) {
SeqList *result = create_seq_list(list1->size + list2->size);
for (int i = 0; i < list1->size; i++) {
insert_seq_list(result, i, list1->arr[i]);
}
for (int i = 0; i < list2->size; i++) {
insert_seq_list(result, list1->size + i, list2->arr[i]);
}
return result;
}
```
顺序表排序
```c
void sort_seq_list(SeqList *list) {
for (int i = 0; i < list->size - 1; i++) {
for (int j = i + 1; j < list->size; j++) {
if (list->arr[i] > list->arr[j]) {
int temp = list->arr[i];
list->arr[i] = list->arr[j];
list->arr[j] = temp;
}
}
}
}
```
C语言中的顺序表是一种基本的数据结构,它使用数组来存储数据。本文介绍了顺序表的创建、基本的插入、删除、获取元素等操作,以及一些进阶操作,如扩容、缩容、查找、合并、排序等。熟练掌握顺序表的实现和操作对于编写高效、健壮的C语言程序至关重要。
2024-11-10
上一篇:C语言函数的组成及概念
Java方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.html
热门文章
C 语言中实现正序输出
https://www.shuihudhg.cn/2788.html
c语言选择排序算法详解
https://www.shuihudhg.cn/45804.html
C 语言函数:定义与声明
https://www.shuihudhg.cn/5703.html
C语言中的开方函数:sqrt()
https://www.shuihudhg.cn/347.html
C 语言中字符串输出的全面指南
https://www.shuihudhg.cn/4366.html