首页 > 其他分享 >数据结构之顺序表(C语言版)

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

时间:2024-03-17 19:29:23浏览次数:17  
标签:index 顺序 int 元素 list C语言 length 数据结构

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

目录

顺序表的结构定义

顺序表的基本操作

应用实例


顺序表的结构定义

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

#define MAX_SIZE 100 // 定义顺序表的最大容量

typedef struct {
    int data[MAX_SIZE]; // 数据元素数组
    int length; // 当前元素个数
} SeqList;
顺序表的基本操作
  1. 初始化顺序表

    void initSeqList(SeqList *L) {
     L->length = 0;
    }
  2. 插入元素

    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; // 插入成功
    }
  3. 删除元素

    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; // 删除成功
    }
  4. 查找元素

    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语言中创建、插入、删除和查找顺序表中的元素。顺序表的简单实现不仅有助于理解数据结构的基本概念,还可以为解决实际问题提供基础。

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

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

标签:index,顺序,int,元素,list,C语言,length,数据结构
From: https://blog.csdn.net/2301_80220607/article/details/136787468

相关文章

  • C语言之Linux环境下学习(一)
    C语言目录C语言学习前言一、了解Linux环境二、Linux环境下编译helloworld.c1.初识Linux指令1.ls:查看当前路径内容2.cd:进入指定路径3.创建和删除文件夹:mkdir、rmdir4.创建文件:touch和gedit2.创建并编译helloworld.c文件前言创建Linux环境,并且在此环境中......
  • C语言之Linux环境下学习(三)
    本章节主要讲了数据类型、变量命名规则、运算符优先级。目录1.main函数2.注释:​编辑3.标准输入(scanf)和标准输出(printf)4.数据类型4.1整数型:4.2浮点型:5.运算符优先级6.字符常量7.运算符​编辑8.变量8.1全局变量局部变量1.main函数main函数是C语言程序的主......
  • c语言,联合体
    一.什么是联合体:像结构体一样,联合体也是由一个或多个成员变量组成的这些成员变量可以是不同的类型,但编译器只给最大成员分配足够的内存,联合体体内的成员都是公用一块空间的,因此联合体也叫做共同体二.联合体类型的声明:unionUn//{charc;inti;};intmain(){ uni......
  • C语言程序设计——实验报告 1
    *实验项目名称:实验一熟悉C语言运行环境*实验项目类型:验证性*实验日期:2023年3月14日一、实验目的下载安装Devc6.0程序。了解在该系统上如何进行编辑、编译、连接和运行一个C程序。通过运行简单的C程序了解C程序的特点。二、实验硬、软件环境Windows计算机、Devc6.0三、......
  • 数据结构知识总结笔记------第四章:串(1)串的定义、存储结构、基本操作
    1、串的定义串是由零个或者多个字符组成的有限序列。串中字符的个数称为串的长度,含有零个元素的串叫空串。在C语言中,可以用以下语句定义一个名为str的串。charstr[]="abcdef";说明:串通常用一个字符数组来表示。从这个角度来讲,数组str内存储的字符为’a’、‘b’、‘c’......
  • 基于C语言实现整数行列式
    在本文章内,将会实现行列式的建立、销毁、打印、计算四个操作。鉴于笔者技术有限,此行列式只针对整数int型,请读者自行扩充~_~。1.行列式的建立与销毁我们首先建立行列式的数据类型,由于行列式规模的不确定,采用动态分配方法。typedefstruct{ intn; int*p;}determinant;......
  • C语言的宏和预处理器
    预处理器的作用预处理器在实际编译发生之前扮演着重要的角色,它处理各种预处理指令,这些指令包括宏定义(#define)、文件包含(#include)、条件编译(#ifdef、#ifndef、#if、#else、#elif、#endif),以及编译错误(#error)和行控制(#line)。示例代码://条件编译#defineDEBUG1#......
  • 【算法与数据结构】堆排序&&TOP-K问题之深入解析二叉树(三)
    文章目录......
  • 【C语言】字符函数与字符串函数以及内存函数 { 超详细攻略,一篇学会 }
    今日分享:字符、字符串函数和内存函数内存函数就是对内存进行操作的函数字符串函数就是对字符串进行操作的函数字符函数就是对字符进行操作的函数str前缀的函数是字符串函数,头文件string.hmem前缀的函数是内存函数,头文件stdlib.h字符函数与字符串函数以及内存函数......
  • C语言分支与循环(二)
    前言通过上一篇文章了解完条件分支语句中的if语句相关知识后,其实除了if语句外,C语⾔还提供了switch语句来实现分⽀结构。接下来我将介绍switch语句,废话不多说,我们直接开始吧!switch语句的基本形式switch(表达式){ case情况1: 语句块1; case情况2: 语句块2; ... ca......