Part 1.顺序表的代码

一.顺序表的内存申请

head.h:
typedef int datatype;typedef struct sqlist
{//数据元素datatype data[MAXSIZE];//顺序表长度int len;}*sqlist;
//*sqlist的作用:
//sqlist:struct Sqlist *
sqlist create();head.c:
sqlist create()
{sqlist list =(sqlist)malloc(sizeof(struct sqlist));//申请堆区空间由指针list接收if(NULL == list)return NULL;//数据表元素清零bzero(list->data,sizeof(list->data));//顺序表长度清零list->len = 0;return list;
}main.c:
sqlist list = create();

二.顺序表尾插+遍历

head.h:
int output(sqlist list);
int insert(sqlist list,datatype element);head.c:
//插入函数
int insert (sqlist list,datatype element)
{if(NULL == list || list->len == MAXSIZE){	printf("顺序表满了\n");return Faluse;}//插入数据list->data[list->len] = element;//顺序表长度自增list->len++;return Success;
}
//遍历函数
int output(sqlist list)
{if(NULL == list || list->len == 0){	printf("顺序表为空\n");return Faluse;}for(int i = 0;i < list->len; i++){printf("%d\t",list->data[i]);}printf("\n");return Success;
}main.c:
for(int i = 0; i < MAXSIZE; i++){scanf("%d",&element);insert(list,element);}output(list);

三.顺序表尾删

head.h:
int delete_rear(sqlist list);head.c:
int delete_rear(sqlist list)
{if(NULL == list || list->len == 0){	printf("顺序表为空\n");return Faluse;}list->len--;return Success;
}main.c:
delete_rear(list);

四.顺序表按下表插入

head.h:
int index_insert(sqlist list,int index, datatype element);head.c:
int index_insert(sqlist list,int index, datatype element)
{if(NULL == list || list->len == MAXSIZE || index < 0 || index >= list->len){	printf("error\n");return Faluse;}list->len++;for (int i = list->len; i >index; i--)//将要加数的下标的表值都往后移{list->data[i] = list->data[i-1];}list->data[index] = element;return Success;
}main.c:
index_insert(list,1,9);

五.顺序表按下表删除

head.h:
int index_delete(sqlist list,int index);head.c:
int index_delete(sqlist list,int index)
{if(NULL == list || list->len == 0 || index < 0 || index >= list->len){	printf("error\n");return Faluse;}for (int i = index; i < list->len; i++)//全部前移{list->data[i] = list->data[i+1];}list->len--;return Success;
}main.c:
index_delete(list,2);

六.顺序表按下表修改

head.h:
int index_change(sqlist list,int index,datatype element);head.c:
int index_change(sqlist list,int index, datatype element)
{if(NULL == list || list->len == 0 || index < 0 || index >= list->len){	printf("error\n");return Faluse;}list->data[index] = element;//将下标对应的表值改为输入的值return Success;
}main.c:
index_change(list,2,5);

七.顺序表按下表查找

head.h:
int index_select(sqlist list,int index);head.c:
int index_select(sqlist list,int index)
{if(NULL == list || list->len == 0 || index < 0 || index >= list->len){	printf("error\n");return Faluse;}printf("%d\n",list->data[index]);//输出下标的值return Success;
}main.c:
index_select(list,3);

八.顺序表按元素删除

head.h:
int element_delete(sqlist list,datatype element);head.c:
int element_delete(sqlist list,datatype element)
{if(NULL == list || list->len == 0){	printf("error\n");return Faluse;}int index = 0;for(int j = 0; j < list->len; j++){if(list->data[j] == element)//找到对应值的下标,进行下标删除{index = j;	for(int i = index; i < list->len; i++){list->data[i] = list->data[i+1];}list->len--;}}return Success;
}main.c;
element_delete(list,5);

九.顺序表按元素查找

head.h:
int element_select(sqlist list,datatype element);head.c:
int element_select(sqlist list,datatype element)
{if(NULL == list || list->len == 0){	printf("error\n");return Faluse;}int index = 0;for(int j = 0; j < list->len; j++){if(list->data[j] == element)//找到对应元素下标并输出{printf("%d\n",j);}}return Success;
}main.c:
element_select(list,9);

十.顺序表按元素修

head.h:
int element_change(sqlist list,datatype element,datatype elementchange);head.c:
int element_change(sqlist list,datatype element,datatype elementchange)
{if(NULL == list || list->len == 0){	printf("error\n");return Faluse;}int index = 0;for(int j = 0; j < list->len; j++){if(list->data[j] == element)//循环寻找下标,并赋值{list->data[j] = elementchange;}}return Success;
}main.c:
element_change(list,9,5);

十一.顺序表去重

head.h:
int D_repetition_rate(sqlist list);head.c:
int D_repetition_rate(sqlist list)
{if(NULL == list || list->len == 0){	printf("error\n");return Faluse;}int index = 0;for(int i = 0; i < list->len; i++){for(int j = i + 1; j < list->len; j++)//每次循环与循环首进行比较{if(list->data[i] == list->data[j])//找到相同的值,调用下标删除{	index = j;	for(int i = index; i < list->len; i++){list->data[i] = list->data[i+1];}list->len--;j--;//往前走一位}}}return Success;
}main.c:
D_repetition_rate(list);

十二.顺序表排序

head.h:
int paixu(sqlist list);head.c:
int paixu(sqlist list)
{if(NULL == list || list->len == 0){	printf("error\n");return Faluse;}for(int i = 1; i < list->len; i++)//冒泡排序{for(int j = 0; j < list->len-i; j++){if(list->data[j] >= list->data[j+1]){		int x = list->data[j];list->data[j] = list->data[j+1];list->data[j+1] = x;}}}return Success;
}main.c:
paixu(list);

Part 2.整理

一.数据结构

        1.逻辑结构

                a.集合结构

元素之间没有关系

                b.线性结构

元素之间有一对一的关系

                c.树形结构

元素之间有一对多关系

                d.图形结构

元素之间有多对多的关系

        2.存储结构

                a.顺序存储

使用一段连续的空间存储多个相同类型的数据元素

                b.链式存储

使用任意一段空间存储多个相同类型的数据元素

                a和b的区别

两种方式都是逻辑上相连,但是链式存储物理空间上没有相连

                c.索引结构

用索引方法和数据表实现查找的结构

                d.散列存储

使用哈希存储的一直存储方式

  二.时间复杂度

T(n) = O(f(n))

T:时间

n:问题的规模

O:大O阶,渐进符

无循环函数

int a = 0;                1

printf("%d",a);                1

T(n) =O(1)                

for循环

for(int i  = 0; i<n; i++)                n+1

{

        printf("%d",i);                n

}

T(n) =O(n)

嵌套for循环

for(int i  = 0; i<n; i++)                n+1

{

        for(int j  = 0; j<n; j++)         n*(n+1)

        {

                printf("%d",i);           n*n

        }          

}

T(n) =O(n^2)

三.顺序表

        1.本质

一个下标从0开始,和数组相似的,连续存储的空间

   

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90045.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90045.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90045.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何在 Vue 的 v-model 指令中不能使用可选链(Optional Chaining)?

Vue 的 v-model 是实现组件与数据双向绑定的核心指令之一&#xff0c;它本质上是一个语法糖&#xff0c;用于简化对表单元素和组件 props 的同步更新。然而&#xff0c;在 Vue 3&#xff08;以及 Vue 2 的某些模式下&#xff09;&#xff0c;开发者尝试在 v-model 中使用 JavaS…

基于单片机智能药盒/智能药箱/定时吃药系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 本设计实现了一种基于单片机的智能药盒&#xff0c;系统以微控制器&#xff08;如STM32&#xff…

(25)python+playwright自动化处理单选和多选按钮-中

1.简介上一篇中讲解和介绍的单选框有点多&#xff0c;而且由于时间的关系&#xff0c;决定今天讲解和分享复选框的相关知识。2.什么是单选框、复选框&#xff1f;单选按钮一般叫raido button&#xff0c;就像我们在电子版的单选答题过程一样&#xff0c;单选只能点击一次&#…

Nginx IP授权页面实现步骤

目标&#xff1a;一、创建白名单文件sudo mkdir -p /usr/local/nginx/conf/whitelist sudo touch /usr/local/nginx/conf/whitelist/temporary.conf二、创建Python认证服务文件路径&#xff1a;/opt/script/auth_server.pyimport os import time from flask import Flask, requ…

2025年7月中科院一区-向光生长优化算法Phototropic growth algorithm-附Matlab免费代码

引言 本期介绍一种新的元启发式算法——向光生长优化算法Phototropic growth algorithm&#xff0c;PGA。灵感来自植物细胞在阳光下的生长模式。于2025年7月最新发表在JCR 1区&#xff0c;中科院1区 SCI 期刊 Knowledge-Based Systems。 该算法将生物学启发的确定性生长行为与…

poi-excel-添加水印

1、官网快速指南 https://poi.apache.org/components/spreadsheet/quick-guide.html 访问如上地址可以查看到poi的相关操作方式&#xff1a; How to create a new workbookHow to create a sheetHow to create cellsHow to create date cellsWorking with different types of…

STM32 开发的鼠标:技术详解与实现指南

概述基于STM32微控制器开发的鼠标是一种高度可定化的输入设备解决方案&#xff0c;广泛应用于工业控制、嵌入式系统、特殊人机交互等领域。相比传统鼠标&#xff0c;STM32鼠标具有以下优势&#xff1a;高度可定制性&#xff1a;可添加特殊功能按键、传感器集成低功耗设计&#…

GoLang教程007:打印空心金字塔

4.6 案例一&#xff1a;打印金字塔编写一个程序&#xff0c;可以接收一个整数&#xff0c;表示层数&#xff0c;打印出金字塔。1️⃣第一步&#xff1a;打印一个矩形 package mainimport "fmt"func main() {// i表示层数for i : 1; i < 3; i {// j表示每层打印多少…

iOS开发 Swift 速记3:运算符与控制结构

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

ElasticSearch中需要注意的点,附官方文档解读

1.批量更新数量大小限制 https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.html#_How_Big_Is_Too_Big 整个批量请求都需要由接收到请求的节点加载到内存中&#xff0c;因此该请求越大&#xff0c;其他请求所能获得的内存就越少。批量请求的大小有一个最佳值…

Git GitHub精通:前端协作开发的“瑞士军刀“!

前言&#xff1a;为什么你的代码总是"失踪"&#xff1f; "啊&#xff01;我的代码呢&#xff1f;"——这可能是每个程序员都曾发出过的灵魂呐喊。还记得上周我熬夜写的300行JavaScript&#xff0c;第二天醒来发现被自己手贱覆盖了&#xff0c;那一刻我深刻…

第 30 场 蓝桥·算法入门赛 题解

1. 零食争议【算法赛】 签到题&#xff1a;1-7奇数相加 #include <bits/stdc.h> using namespace std; int main() {// 请在此输入您的代码cout<<1357;return 0; } 2. 数字炸弹【算法赛】 把n个人看为前n-1和后n-1 &#xff0c; 方便找到是第几段的第几个数 #in…

闲庭信步使用图像验证平台加速FPGA的开发:第二十四课——图像直方图均衡化的FPGA实现

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击top_tb.bat文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程…

LabVIEW 2025安装包| 免费免激活版下载| 附图文详细安装教程

[软件名称]&#xff1a;LabVIEW 2025 [软件大小]&#xff1a;13 G [系统要求]&#xff1a;支持Win7及更高版本 [下载通道]:夸克网盘 [下载链接]: https://pan.quark.cn/s/7e9527cc06a3 &#xff08;建议用手机保存到网盘后&#xff0c;再用电脑下载&#xff09; 更多免费软件&a…

如何实现泵站的无人值守:御控智慧水务平台

在城乡供水、农田灌溉、工业循环水等场景中&#xff0c;泵站作为核心动力设施&#xff0c;其运行效率直接影响水资源调配的稳定性。然而&#xff0c;传统泵站管理长期面临三大痛点&#xff1a;人力成本高昂&#xff1a;偏远地区泵站需24小时值守&#xff0c;单站年均人力成本超…

深度学习篇---车道线循迹

要实现基于深度学习的双车道线&#xff08;黄色车道线&#xff09;循迹&#xff08;通过预测四个轮子的转速实现自主控制&#xff09;&#xff0c;需要从数据采集、模型设计、训练策略、环境适应等多维度系统优化。以下是具体方案及需要注意的关键事项&#xff0c;旨在提升精准…

JavaScript,发生异常,try...catch...finally处理,继续向上层调用者传递异常信息

JavaScript中&#xff0c;‌异常&#xff08;Exception&#xff09;和错误&#xff08;Error&#xff09; JavaScript 是一种解释型语言&#xff0c;通常在浏览器中通过JavaScript引擎执行。最著名的两个引擎是&#xff1a;SpiderMonkey&#xff08;由 Mozilla Firefox 使用&a…

SpringMVC快速入门之启动配置流程

SpringMVC快速入门之启动配置流程一、SpringMVC启动的核心流程二、环境准备与依赖配置2.1 开发环境2.2 Maven依赖配置三、初始化Servlet容器&#xff1a;WebApplicationInitializer3.1 实现WebApplicationInitializer3.2 配置编码过滤器&#xff08;解决中文乱码&#xff09;四…

ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。将创新性融合地理信息系统&#xff08;GIS&#xff09;的空间分析能力与暴雨雨水管理模型&#xff08;SWMM&#xff09;的水动力计算优势…

PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC

PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC 文章目录PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC前言1. 确保固件版本为2.192. 刷系统到U盘3. 启动U盘系统4. U盘系统写入EMMC5. 关机拨U盘6. 重新上电环境&#xff1a; 系统&#xff1a;Armbi…