c语言数据结构顺序表
时间: 2023-10-17 19:06:58 浏览: 111
顺序表是一种线性表,它的元素在物理上连续存储,可以通过下标随机访问元素。在C语言中,可以使用数组来实现顺序表。
顺序表的基本操作包括初始化、插入、删除、查找、遍历等。
初始化顺序表的代码如下:
```
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
```
相关问题
C语言数据结构顺序表逆置
要实现顺序表的逆置,可以使用两个指针,一个指向顺序表的起始位置,另一个指向顺序表的末尾位置。通过交换这两个指针所指向的元素,并向中间移动,逐步逆置整个顺序表。
下面是一个示例代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
void reverse(int arr[], int size) {
int start = 0;
int end = size - 1;
while (start < end) {
// 交换起始位置和末尾位置的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 向中间移动指针
start++;
end--;
}
}
int main() {
int arr[MAX_SIZE];
int size;
printf("请输入顺序表的大小:");
scanf("%d", &size);
printf("请输入顺序表的元素:");
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
printf("逆置前的顺序表:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
reverse(arr, size);
printf("\n逆置后的顺序表:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这段代码中,首先定义了一个 `reverse` 函数来实现逆置操作。然后在 `main` 函数中,通过用户输入顺序表的大小和元素,然后调用 `reverse` 函数进行逆置,并输出结果。
C语言数据结构顺序表的实现
在C语言中,顺序表是一种基础的数据结构,通常通过数组的方式实现。它存储元素的方式是连续的内存空间,可以按照索引直接访问每个元素。下面是一个简单的顺序表实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构体
typedef struct {
int* data; // 存储数据的数组指针
int size; // 当前元素的数量
int capacity; // 表的最大容量
} SequenceList;
// 初始化顺序表
SequenceList* init_list(int capacity) {
SequenceList* list = (SequenceList*)malloc(sizeof(SequenceList));
list->data = (int*)malloc(capacity * sizeof(int)); // 分配初始容量
list->size = 0;
list->capacity = capacity;
return list;
}
// 在列表末尾添加元素
void append(SequenceList* list, int value) {
if (list->size == list->capacity) { // 如果已满,扩容
list->capacity *= 2; // 新容量为当前两倍
list->data = (int*)realloc(list->data, list->capacity * sizeof(int)); // 重新分配内存
}
list->data[list->size++] = value; // 添加新元素并更新大小
}
// 删除指定位置的元素
void remove(SequenceList* list, int index) {
if (index >= 0 && index < list->size) {
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->size--;
if (list->size == list->capacity / 4 && list->capacity > 0) { // 缩容条件
list->capacity /= 2;
list->data = (int*)realloc(list->data, list->capacity * sizeof(int)); // 重新分配内存
}
} else {
printf("Index out of range.\n");
}
}
// 打印顺序表
void print_list(SequenceList* list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 示例使用
int main() {
SequenceList* myList = init_list(5);
append(myList, 1);
append(myList, 2);
print_list(myList); // 输出: 1 2
remove(myList, 0);
print_list(myList); // 输出: 2
free(myList->data);
free(myList);
return 0;
}
```
阅读全文