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

动态数据表的实现(查找)

一、头文件:SeqList.h

1.1.作用:包含所有结构体定义和函数声明。
1.2.代码

代码如下:

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int SLDataType;
typedef struct SeqList {
SLDataType* a;
int size;
int capacity;
}SL;
void SLCheckCapacity(SL* sl);
void SLprint(SL* sl);
void SLInit(SL* sl);
void SLPushFront(SL* sl, SLDataType x);
void SLPushBack(SL* sl, SLDataType x);
void SLInsert(SL* sl, int pos, SLDataType x);
void SLRemoveAll(SL* sl, SLDataType x);
void SLPopFront(SL* sl);
void SLPopBack(SL* sl);
void SLErase(SL* sl, int pos);
//查找元素
int SLFind(SL* sl, SLDataType x);

二、实现文件:3-20.c

2.1.作用:定义结构体和所有函数的接口
2.2.代码

代码如下:

//查找元素
int SLFind(SL* sl, SLDataType x) {
assert(sl);
for (int i = 0; i < sl->size; i++) {
if (sl->a[i] == x) {
return i;
}
}
return -1;
}

三、 测试文件:test.c

3.1.作用:程序的入口,演示如何使用上述所有功能
3.2.代码

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqL.h"
void SLTest01() {
SL sl;
SLInit(&sl);
printf("------1.测试头插-----");
SLPushFront(&sl, 0);
SLPrint(&sl);
printf("------2.测试尾插-----");
SLPushBack(&sl, 1);
SLPushBack(&sl, 2);
SLPushBack(&sl, 3);
SLPushBack(&sl, 4);
SLPushBack(&sl, 5);
SLPrint(&sl);
printf("------3.测试任意位置插入-----");
SLInsert(&sl, 2, 99);
SLPrint(&sl);
printf("------4.删除所有的2------");
SLPushBack(&sl, 2);
SLPushBack(&sl, 2);
SLPushBack(&sl, 2);
SLPushBack(&sl, 2);
SLPushBack(&sl, 6);
printf("删除前:");
SLPrint(&sl);
printf("正在删除所有值为2的元素....\n");
SLRemoveAll(&sl, 2);
printf("删除后: ");
SLPrint(&sl);
printf("-------头删-------");
SLPopFront(&sl);
SLPrint(&sl);
printf("-------尾删-------");
SLPopBack(&sl);
SLPrint(&sl);
printf("-------删除指定位置-------");
SLErase(&sl, 2);
SLPrint(&sl);
printf("------5.测试查找-----------");
SLFind(&sl, 3);
if (SLFind(&sl, 3)!=-1) {
SLPrint(&sl, 3);
}
else {

printf("没有找到");
}
}

int main() {
SLTest01();
return 0;
}

http://www.jsqmd.com/news/512179/

相关文章:

  • Qwen-Image镜像金融实践:财报截图自动解析与关键信息提取(RTX4090D实测)
  • 万象熔炉 | Anything XL入门指南:如何通过negative prompt强化画面干净度
  • java微信小程序的社区群互动打卡交流系统设计与实现
  • MCP与VS Code插件集成:5个关键配置项+4类高频报错,95%开发者踩过的坑你避开了吗?
  • Qwen-VL多模态推理教程:Qwen-Image镜像中图像caption生成质量评估指标实践
  • 【DiT视频生成技术】第二章 核心机制的技术实现
  • 特斯拉Model Y全自动驾驶交付背后的黑科技:HW5.0硬件拆解与FSD V14实战解析
  • ST-LINK Firmware Upgrade: A Step-by-Step Guide to Resolving Common Issues
  • Glyph视觉推理新手教程:从部署到应用,一步步带你掌握
  • C语言形式化验证实战路径:从模型构建到定理证明的7个不可跳过的硬核步骤
  • 从存储到挂载:一次完整的华为OceanStor SAN存储+LUN挂载Linux实战记录(含排错点)
  • OpenClaw小龙虾正在重塑网工和运维的工作方式
  • VideoAgentTrek-ScreenFilter一键部署教程:基于Node.js的环境配置与快速启动
  • Fish-Speech 1.5实战体验:无需配置音素,直接输入文字生成语音
  • ONLYOFFICE文档服务器权限控制全解析:如何用Java实现精细化的用户角色管理?
  • 软件设计师-组网技术基础:网络设备、传输介质与局域网核心协议
  • 动态顺序表的实现(修改)
  • 别再混淆了!一文讲清NTLMv1、NTLMv2哈希的区别与各自的破解方法(附Hashcat/John命令)
  • 如何重构传统定位技术:下一代UWB室内定位系统实战指南
  • java微信小程序的计算机软考模拟系统的设计与实现
  • 裸机程序员转型RTOS高手的终极路径(手把手移植LWIP+CMSIS-RTOS到STM32F4,含全量汇编启动文件解析)
  • 告别TreeView+DataGridView!用Krypton的TreeGridView在WinForm里轻松搞定树形表格
  • 手把手教学:用Meta-Llama-3-8B-Instruct镜像快速搭建类ChatGPT应用
  • Z-Image-Turbo模型自动化运维指南:基于Docker与K8s的弹性伸缩部署
  • ComfyUI文生图新体验:Nunchaku FLUX.1-dev镜像,一键生成惊艳视觉作品
  • 伺服电机控制实战:从PID调参到三闭环系统搭建(附永磁同步电机案例)
  • 1600: 赛车游戏
  • 避坑指南:QCustomPlot在嵌入式Linux下的5大常见问题及解决方案(Qt5.15+)
  • 3月精选:安徽电动葫芦优质企业推荐来了,铝合金KBK起重机/洁净室起重机/起重机/刚性KBK,安徽电动葫芦厂家怎么选择 - 品牌推荐师
  • FLUX.1-dev实战:快速生成电商海报、概念艺术图,提升创作效率