当前位置: 首页 > news >正文

Day1-顺序表

1. 数据结构-基本概念

数据之间的相互关系,包括三种关系:逻辑结构:表示数据元素之间的抽象关系(如邻接关系、从属关系等)。有四种基本的逻辑结构:集合结构、线性结构、树形结构、图状结构存储结构:数据的逻辑结构在计算机内的存储形式分为顺序存储结构、链接存储结构、索引存储结构、散列存储结构数据运算:对数据进行的操作:如插入、删除、查找、排序等。

2. 数据结构-算法

算法:解决特定问题的步骤的描述,在计算机中算法是一个有穷规则(或语句、指令)的有序集合。它确定一解决某一问题的一个运算序列。对于问题的初始输入,通过算法有限步,产生一个或多个输出。算法是解决问题的思想方法程序是计算机语言的具体实现算法的特性:有穷性、确定性、可行性、输入、一个或多个输出

3. 数据结构-线性表

线性表的基本运算:建立一个空表:CreateList(L)置空表:ClearList(L)判断表是否为空:EmptyList(L)若表为空,返回值为True(或1),否则返回false(或0)求表长:Length(L)求表中某个元素:GetList(L,i)定位运算:Locate(L,x)插入:Insert(L,x,i)删除:Delete(L,i)另外还有合并、拆分、复制、排序和遍历等复杂的运算

4. 顺序表的实现一

/*seqlist.h头文件*/
/************************* 创建线性表   reate_seqlist()* 释放线性表   clear_seqlist()* 判断线性表是否为空  is_empty_seqlist()* 判断线性表是否为满  is_full_seqlist()* 设置为空     set_empty_seqlist()* 获取线性表的长度    get_length_seqlist()* 显示线性表内所有有效元素   show_seqlist()** 加入数据    insert_seqlist()* 删除数据    delete_seqlist()* 修改数据    change_seqlist()* 查找数据    search_seqlist()* */
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
​
#define MAXSIZE 100
typedef int data_t;                                     
typedef struct {data_t data[MAXSIZE];int last;
}seqlist_t;
​
seqlist_t *reate_seqlist(void);
void clear_seqlist(seqlist_t *L);
​
int is_empty_seqlist(seqlist_t *L);
int is_full_seqlist(seqlist_t *L);
void set_empty_seqlist(seqlist_t *L);
int get_length_seqlist(seqlist_t *L);
void show_seqlist(seqlist_t *L);
​
int insert_seqlist(seqlist_t *L,data_t x,int pos);
int delete_seqlist(seqlist_t *L,int pos);
int change_seqlist(seqlist_t *L,data_t x,int pos);
int search_seqlist(seqlist_t *L,data_t x);
​
#endif
/*seqlist.c 函数具体实现文件*/
#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h"
​
​
seqlist_t *reate_seqlist(void)
{seqlist_t *L=NULL;L = (seqlist_t *)malloc(sizeof(seqlist_t));if(L == NULL){puts("no memory");return NULL;}L->last = -1;return L;
}
void clear_seqlist(seqlist_t *L){if(L == NULL){puts("seqlist_t *L is NULL");return ;}free(L);return ;
}
​
int is_empty_seqlist(seqlist_t *L)
{if(L == NULL){puts("seqlist_t *L is NULL");return -1;}return (L->last == -1);
}
int is_full_seqlist(seqlist_t *L)
{if(L == NULL){puts("seqlist_t *L is NULL");return -1;}return (L->last == MAXSIZE-1);
}
void set_empty_seqlist(seqlist_t *L)
{if(L == NULL){puts("seqlist_t *L is NULL");return ;}L->last = -1;return ;
}
int get_length_seqlist(seqlist_t *L){if(L == NULL){puts("seqlist_t *L is NULL");return -1;}return (L->last + 1);
}
void show_seqlist(seqlist_t *L)
{int i = 0;if(L == NULL){puts("seqlist_t *L is NULL");return ;}for(i=0;i<=L->last;i++)printf("L->data[%d] = %d\n",i,L->data[i]);return ;
}
​
int insert_seqlist(seqlist_t *L,data_t x,int pos)
{int i=0;if(is_full_seqlist(L) || (pos<0) || pos>L->last+1){puts("input argv is invalid");return -1;}for(i=L->last;i>=pos;i--)L->data[i+1] = L->data[i];L->data[pos] = x;L->last++;return 0;
}
int delete_seqlist(seqlist_t *L,int pos)
{int i = 0;if((pos<0)||(pos>L->last)){puts("input post is invalid");return -1;}for(i=pos;i<get_length_seqlist(L);i++)L->data[i] = L->data[i+1];L->last--;return 0;
}
int change_seqlist(seqlist_t *L,data_t x,int pos)
{if((pos<0)||(pos>L->last)){puts("input pos is invalid");return -1;}L->data[pos] = x;return 0;
}
int search_seqlist(seqlist_t *L,data_t x)
{int i = 0;for(i=0;i<L->last;i++){if(L->data[i] == x)return i;}return -1;
}
​
/*Makefile 工程管理文件*/
CC = gcc
CFLAGS = -oo -g -Wall
​
test:test.c seqlist.c$(CC) $(CFLAGS) -o $@ $^
.PHONY:clean
clean:rm -rf test
/*test.c 测试文件*/
#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h"
​
int main(int argc,const char *argv[])
{int i=0;seqlist_t *L=NULL;L = reate_seqlist();for(i=0;i<=4;i++)insert_seqlist(L,i,0);printf("seqlist L length is %d\n",get_length_seqlist(L));show_seqlist(L);puts("=================================================");puts("search data = 3");printf("data = 3 pos is %d\n",search_seqlist(L,3));printf("seqlist L length is %d\n",get_length_seqlist(L));show_seqlist(L);puts("=================================================");puts("search data = 3");delete_seqlist(L,search_seqlist(L,3));printf("data = 3 pos is %d\n",search_seqlist(L,3));show_seqlist(L);puts("=================================================");puts("clear data[2] = 99");change_seqlist(L,99,2);printf("seqlist L length is %d\n",get_length_seqlist(L));show_seqlist(L);puts("=================================================");​
​clear_seqlist(L);
​
​return 0;
}
​
/*测试结果:
seqlist L length is 5
L->data[0] = 4
L->data[1] = 3
L->data[2] = 2
L->data[3] = 1
L->data[4] = 0
=================================================
search data = 3
data = 3 pos is 1
seqlist L length is 5
L->data[0] = 4
L->data[1] = 3
L->data[2] = 2
L->data[3] = 1
L->data[4] = 0
=================================================
search data = 3
data = 3 pos is -1
L->data[0] = 4
L->data[1] = 2
L->data[2] = 1
L->data[3] = 0
=================================================
clear data[2] = 99
seqlist L length is 4
L->data[0] = 4
L->data[1] = 2
L->data[2] = 99
L->data[3] = 0
=================================================
*/

相关文章:

Day1-顺序表

1. 数据结构-基本概念 数据之间的相互关系&#xff0c;包括三种关系&#xff1a;逻辑结构&#xff1a;表示数据元素之间的抽象关系(如邻接关系、从属关系等)。有四种基本的逻辑结构&#xff1a;集合结构、线性结构、树形结构、图状结构存储结构&#xff1a;数据的逻辑结构在计算…...

PostgreSQL - pgvector 插件构建向量数据库并进行相似度查询

在现代的机器学习和人工智能应用中&#xff0c;向量相似度检索是一个非常重要的技术&#xff0c;尤其是在文本、图像或其他类型的嵌入向量的操作中。本文将介绍如何在 PostgreSQL 中安装 pgvector 插件&#xff0c;用于存储和检索向量数据&#xff0c;并展示如何通过 Python 脚…...

UR机器人坐标系转化

UR机器人读取上来的坐标系是旋转矢量&#xff0c;每次都要查一下怎么转换&#xff0c;在这里记录以下...

【每日一题】LeetCode 2306.公司命名(位运算、数组、哈希表、字符串、枚举)

【每日一题】LeetCode 2306.公司命名&#xff08;位运算、数组、哈希表、字符串、枚举&#xff09; 题目描述 给定一个字符串数组 ideas&#xff0c;表示在公司命名过程中使用的名字列表。我们需要从 ideas 中选择两个不同的名字&#xff0c;称为 ideaA 和 ideaB。然后交换 i…...

240922-chromadb的基本使用

A. 背景介绍 ChromaDB 是一个较新的开源向量数据库&#xff0c;专为高效的嵌入存储和检索而设计。与其他向量数据库相比&#xff0c;ChromaDB 更加专注于轻量化、简单性和与机器学习模型的无缝集成。它的核心目标是帮助开发者轻松管理和使用高维嵌入向量&#xff0c;特别是与生…...

工厂模式和抽象工厂模式的实验报告

1. 实验结果&#xff1a; 记录并附上不同模型对象&#xff08;例如&#xff1a;士兵、机器人、骑士&#xff09;的展示效果截图。 2. 性能分析&#xff1a; 记录并比较抽象工厂模式与直接实例化的性能测试结果&#xff0c;分析它们在不同数量级对象创建时的开销与效益。 2.1…...

C标准库<string.h>-str、strn开头的函数

char *strcat(char *dest, const char *src) 函数功能 strcat 函数用于将一个字符串追加到另一个字符串的尾部。 参数解释 dest&#xff1a;指向目标字符串的指针&#xff0c;这个字符串的尾部将被追加 src 字符串的内容。src&#xff1a;指向源字符串的指针&#xff0c;其…...

Anaconda/Miniconda的删除和安装

要在 MacBook 上删除 Anaconda 或 Miniconda,并重新安装它,您可以按照以下步骤进行操作。 删除 Anaconda/Miniconda 1. 删除 Anaconda/Miniconda 文件和目录 打开 终端 并运行以下命令来删除安装目录。 对于 Anaconda,通常安装在 ~/anaconda3: rm -rf ~/anaconda3对于…...

【Harmony】轮播图特效,持续更新中。。。。

效果预览 swiper官网例子 Swiper 高度可变化 两边等长露出&#xff0c;跟随手指滑动 Swiper 指示器导航点位于 Swiper 下方 卡片楼层层叠一 一、官网 例子 参考代码&#xff1a; // xxx.ets class MyDataSource implements IDataSource {private list: number[] []cons…...

Go 并发模式:管道的妙用

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在编写程序时,我们通常不会一口气写出一个冗长的函数。相反,我们通过构建函数、结构体和方法等抽象来简化代码。这不仅有助于隐藏不重要的细节,还使我们能够专注于某一部分代码,而不必担心影响其他部分。然而…...

CAN通信详解

1、CAN介绍 1.1、什么是CAN? CAN&#xff08;Controller Area Network&#xff09; 即控制器局域网&#xff0c;是ISO国际标准化的串行通信协议。 开发目的&#xff1a;为了满足汽车产业的“减少线束的数量”、“通过多个LAN&#xff0c;进行大量数据的高速通信”…...

52 文本预处理_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录一、理论部分二、代码读取数据集词元化词表整合所有功能小结练习 一、理论部分 对于序列数据处理问题&#xff0c;我们在序列处理中评估了所需的统计工具和预测时面临的挑战。 …...

【python】字符串扩展-格式化的精度控制

字符串扩展 字符串的三种定义方式字符串拼接字符串格式化格式化的精度控制字符串格式化方式2对表达式进行格式化 学习目标 掌握格式化字符串的过程中做数字的精度控制 字符串格式化 name "小明" set_up_year 2006 stock_price 19.99 message "我是&…...

C++第一次练习

题目1 class Solution { public:bool isletter(char s){if(s<z&&s>a)return true;if(s>A&&s<Z)return true;return false;}string reverseOnlyLetters(string s) {if(s.empty()){return s;}int left,right;left0;rights.size()-1;while(left<ri…...

计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

JAVA基础:正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点

1 String中的常用方法2 1.1 split方法 将字符串按照指定的内容进行分割&#xff0c;将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的&#xff0c;而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合…...

前端接口报错302 [已解决]

前端接口报错302 [已解决] 在前端开发中&#xff0c;与后端接口的交互是项目成功的关键。然而&#xff0c;遇到如302这样的状态码报错时&#xff0c;可能会让开发者感到困惑。本文将通过详细解析和多个代码案例&#xff0c;帮助你深入理解前端接口报错302&#xff0c;并提供有效…...

【网络安全】利用未授权API接口实现创建Support Ticket

未经许可,不得转载。 文章目录 正文目标为一个技术平台,客户可以通过该平台预订不同类型的服务。 正文 redacted.com 是主域,但所有流量都通过 api.redacted.com。我过去曾使用该公司预订了一些服务,因此我的帐户中有预订历史。 我对我的订单开具了 Support Ticket,此时…...

气压高度加误差的两种方法(直接添加 vs 换算到气压误差),附MATLAB程序

在已知高度真实值时,如果需要计算此高度下的气压计误差,可考虑本文所述的两种方法 气压高度 气压与高度之间的关系可以用大气压的垂直变化来描述。随着高度的增加,气压通常会下降。这是因为空气的密度在高度增加时减少,导致上方空气柱对下方空气施加的压力减小。 主要关系…...

Word 制作会议名牌教程

文章目录 Part.I IntroductionPart.II 制作步骤 Part.I Introduction 本文详细介绍了如何用 Word 制作会议名牌&#xff0c;附有笔者制作好的一个成品&#xff08;戳我下载~&#xff09;。 下面是一些常识 会议名牌尺寸&#xff1a;100mm 180mm Part.II 制作步骤 1、新建文…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...