当前位置: 首页 > 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);
//修改指定位置的数据
void SLModify(SL* sl, int pos, SLDataType);

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

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

代码如下:

//修改指定位置的数据
void SLModify(SL* sl, int pos, SLDataType x){
assert(sl);
assert(pos >= 0 && pos <= sl->size);
sl->a[pos] = x;
}

三、测试文件: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("没有找到");
}
SLModify(&sl, 1, 88);
SLPrint(&sl);
}
int main() {
SLTest01();
return 0;
}

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

相关文章:

  • 别再混淆了!一文讲清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实战:快速生成电商海报、概念艺术图,提升创作效率
  • 企业级架构设计:基于Dify与Nanbeige 4.1-3B构建可运营的AI应用平台
  • Phi-3-Mini-128K多场景实战:代码生成、Bug诊断、注释补全一体化工具
  • 邮件服务器
  • Android音频处理实战:基于CosyVoice的高效语音流架构设计与避坑指南
  • Qwen3-32B GPU高效利用:RTX4090D单卡运行32B模型的显存碎片整理与优化
  • Ubuntu18.04下Livox Tele-15激光雷达ROS驱动配置全流程(含常见问题解决)
  • Smartbi审批流实战:如何为不同分公司设计差异化的预算提报流程(附节点配置截图)
  • Nanbeige 4.1-3B基础教程:支持<think>标签的像素前端快速上手指南
  • Qwen3.5-9B快速上手:无需配置CUDA环境的Web UI部署方案
  • 独立游戏必备!5分钟为Unity项目添加多语言支持(Luban/QFramework保姆级教程)
  • 生态位防御:亚马逊领导者的“快速测试”与“付费警戒”
  • 对标阿里P5~P7Java程序员体系学习路线全网首次公开!
  • 客服智能体方案实战:基于LLM的高效工单处理系统设计与避坑指南
  • Stable-Diffusion-v1-5-archive镜像安全加固:非root运行+只读文件系统+seccomp策略
  • 用Python+D3.js打造动态桑基图:从数据清洗到交互设计全流程
  • 基于DeOldify的跨平台移动应用开发:使用React Native集成上色SDK
  • 手把手教你用VirtualBox配置Secure Boot:从密钥生成到启动验证