表篇(一)----顺序表的创建与使用(C语言版)

2024-02-22 11:32

本文主要是介绍表篇(一)----顺序表的创建与使用(C语言版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇博客是整理数据结构知识的第一篇博客,由于本人也刚接触数据结构,所以这篇最简单的顺序表的创建,写了好久好久,都快想放弃掉了。
但是还是一点一点坚持下来了,所以希望广大读者也可以坚持学习数据结构,坚持看我的数据结构总结博客。

本篇文章主要介绍了顺序表的创建,初始化,查找某元素在顺序表中的位序,插入,删除,循环遍历,内容简单。
#include<stdio.h>
#include<stdlib.h>    //malloc函数头文件
typedef struct{int *elem;int length;int maxlength;
}SqList;bool InitList(SqList &L,int size){  //数据表的创建L.maxlength = size;L.elem = (int *)malloc(sizeof(SqList));     //给顺序表创建动态空间if (!L.elem){return	false;}L.length = 0;return true;
}
void Be(SqList &L){                //数据表初始存放数据printf("初始状态顺序表的长度:\n");scanf_s("%d", &L.length);printf("请输入你要创建的顺序表:\n");for (int i = 0; i < L.length; i++){scanf_s("%d", &L.elem[i]);   //存入的值从数组0开始}
}
int LocateElem(SqList L, int e){           //查找某元素在数据表中的位序  for (int i = 0; i < L.length; i++){if (L.elem[i] == e){return i + 1;}}return 0;
}
bool ListInsert(SqList &L, int i, int e){      //向顺序表中某位置插入一个元素if (i<1 || i>L.length + 1){return false;}if (L.length == L.maxlength){return false;}for (int j = L.length-1 ; j >= i-1; j--){   //确定数组移动范围从最后到位序为i的数组i-1位置L.elem[j + 1] = L.elem[j];         //将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置}L.elem[i-1] = e;                  //位序从1开始,但数组从0开始++L.length;return true;
}bool ListDelete(SqList &L, int i, int &e){          //删除顺序表中某位置元素if (i<1 || i>L.length ){return false;}e = L.elem[i - 1];for (int j = i; j <L.length; j++){             //确定数组移动范围为从位序为i+1的数组i位置到最后L.elem[j - 1] = L.elem[j];           //将第i+1个至第n个的元素依次向前移动一个位置}--L.length;return true;
}void ListTraverse(SqList &L){                    //遍历输出顺序表for (int i = 0; i < L.length; i++){printf("%d", L.elem[i]);}
}int main(){
int i,j,g;
SqList L;
printf("顺序表最大长度:\n");
scanf_s("%d", &i);    //输入顺序表最大长度
InitList(L,i);        //创建顺序表
Be(L);                //初始化数据表,这里事例为:1,2,3,4
ListInsert(L, 5, 7);  //向数据表目前最后一个位置插入数据
ListDelete(L, 1,j);   //删除数据表第一个位置的元素
printf("%d\n", j);    //输出删除的元素值
ListTraverse(L);      //遍历输出现在的顺序表
printf("\n");         //换行
g=LocateElem(L, 3);   //查看此时顺序表中元素值为3的位置
printf("%d\n", g);    //输出位置
return 0;
}

这篇关于表篇(一)----顺序表的创建与使用(C语言版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735125

相关文章

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换