数据结构之顺序表(C语言版)

简介: 数据结构之顺序表(C语言版)

顺序表是数据结构中最基本的一种线性表,它以一段连续的存储空间来存储数据元素,元素之间的顺序由它们在内存中的位置来决定。在C语言中,我们通常使用数组来实现顺序表。



顺序表的结构定义

首先,我们需要定义一个结构体来表示顺序表,包括数据元素数组和当前元素个数等信息:

#define MAX_SIZE 100 // 定义顺序表的最大容量
 
typedef struct {
    int data[MAX_SIZE]; // 数据元素数组
    int length; // 当前元素个数
} SeqList;
顺序表的基本操作
  1. 初始化顺序表
void initSeqList(SeqList *L) {
 L->length = 0;
}

插入元素

int insert(SeqList *L, int index, int element) {
 if (index < 0 || index > L->length || L->length == MAX_SIZE) {
     return 0; // 插入失败
 }
 for (int i = L->length - 1; i >= index; i--) {
     L->data[i + 1] = L->data[i];
 }
 L->data[index] = element;
 L->length++;
 return 1; // 插入成功
}

删除元素

int delete(SeqList *L, int index) {
 if (index < 0 || index >= L->length) {
     return 0; // 删除失败
 }
 for (int i = index; i < L->length - 1; i++) {
     L->data[i] = L->data[i + 1];
 }
 L->length--;
 return 1; // 删除成功
}

查找元素

int search(SeqList L, int element) {
 for (int i = 0; i < L.length; i++) {
     if (L.data[i] == element) {
         return i; // 返回元素位置
     }
 }
 return -1; // 元素不存在
}
应用实例
#include <stdio.h>
 
int main() {
    SeqList list;
    initSeqList(&list);
 
    insert(&list, 0, 10);
    insert(&list, 1, 20);
    insert(&list, 2, 30);
 
    printf("顺序表中的元素为: ");
    for (int i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]);
    }
    printf("\\n");
 
    delete(&list, 1);
 
    printf("删除元素后的顺序表为: ");
    for (int i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]);
    }
    printf("\\n");
 
    int index = search(list, 30);
    if (index != -1) {
        printf("元素30的位置为: %d\\n", index);
    } else {
        printf("元素30不存在\\n");
    }
 
    return 0;
}

通过以上实现,我们可以在C语言中创建、插入、删除和查找顺序表中的元素。顺序表的简单实现不仅有助于理解数据结构的基本概念,还可以为解决实际问题提供基础。


顺序表作为线性表的开头部分,对于我们后续学习数据结构中还是很重要的,需要我们把它学好,本篇文章也只是点了一下知识点并给出少许例子,更多的知识还需要我们自己去探索学习!

感谢观看,还请点一个小小的赞吧!!!

相关文章
|
4天前
|
存储
数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)
数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)
|
11天前
|
存储 机器学习/深度学习 算法
【数据结构与算法】:手搓顺序表(Python篇)
【数据结构与算法】:手搓顺序表(Python篇)
|
11天前
|
存储 算法 C++
【数据结构与算法】:带你手搓顺序表(C/C++篇)
【数据结构与算法】:带你手搓顺序表(C/C++篇)
|
19天前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
15 1
|
13小时前
|
存储 缓存 前端开发
【数据结构/C语言】深入理解 双向链表
【数据结构/C语言】深入理解 双向链表
|
15小时前
|
存储 算法 C语言
【数据结构】详解顺序表
【数据结构】详解顺序表
2 0
|
1天前
|
存储 算法
【C/数据结构与算法】:顺序表的实现
【C/数据结构与算法】:顺序表的实现
6 0
|
12天前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
14天前
数据结构初阶 顺序表的补充
数据结构初阶 顺序表的补充
9 0
|
14天前
|
存储
数据结构初阶 顺序表的讲解
数据结构初阶 顺序表的讲解
9 0