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

顺序表插入删除

顺序表的初始化、销毁、打印、头插、尾插、头删、尾删

一、头文件SeqList.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//静态顺序表
//typedef N 100
//struct SeqList
//{
//	int arr[N];
//	int size;//有效数据个数
//};//动态顺序表
typedef int SLDataType;
typedef struct SeqList
{SLDataType* arr;int size;//有效数据个数int capacity;//空间大小
}SL;
//初始化
void SLInit(SL* ps);
//销毁
void SLDestroy(SL* ps);
//扩容
void SLCheckCapacity(SL* ps);
//打印
void SLPrint(SL ps);
//头插
void SLPushFront(SL* ps, SLDataType x);
//尾插
void SLPushBack(SL* ps, SLDataType x);
//头删
void SLPopFront(SL* ps);
//尾删
void SLPopBack(SL* ps);

二、SeqList.c文件

#include"SeqList.h"
//初始化
void SLInit(SL* ps)
{ps->arr = NULL;ps->size = ps->capacity = 0;
}
//销毁
void SLDestroy(SL* ps)
{if (ps->arr != NULL){free(ps->arr);}ps->arr = NULL;ps->size = ps->capacity = 0;
}
//扩容
void SLCheckCapacity(SL* ps)
{//插入数据之前看看空间够不够if (ps->size == ps->capacity){//申请空间int newCapacity = ps->capacity == 0 ? 4 : 2 * ps->capacity;SLDataType* tmp = (SLDataType*)realloc(ps->arr, newCapacity * sizeof(SLDataType));if (tmp == NULL){perror("realloc fail!");exit(1);//直接退出程序,不再执行}//空间申请成功ps->arr = tmp;ps->capacity = newCapacity;}
}
//打印
void SLPrint(SL ps)
{for (int i = 0; i <ps.size; i++){printf("%d ", ps.arr[i]);}printf("\n");
}
//头插
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);for (int i = ps->size; i > 0; i--){ps->arr[i] = ps->arr[i - 1];}ps->arr[0] = x;ps->size++;
}
//尾插
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);ps->arr[ps->size] = x;ps->size++;
}
//头删
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size != NULL);for (int i = 0; i < ps->size-1; i++){ps->arr[i] = ps->arr[i + 1];//arr[size-2]=arr[size-1]}ps->size--;
}
//尾删
void SLPopBack(SL* ps)
{assert(ps);assert(ps->arr != NULL);ps->arr[ps->size - 1] = -1;ps->size--;
}

三、测试文件

#include"SeqList.h"
void SLTest()
{SL sl;SLInit(&sl);SLPushFront(&sl, 1);SLPushFront(&sl, 2);SLPushFront(&sl, 3);SLPushFront(&sl, 4);SLPrint(sl);////测试尾插//SLPushBack(&sl, 6);//SLPushBack(&sl, 7);//SLPushBack(&sl, 8);//SLPushBack(&sl, 9);//SLPrint(sl);////测试头删//SLPopFront(&sl);//SLPopFront(&sl);//SLPrint(sl);//测试尾删SLPopBack(&sl);SLPopBack(&sl);SLPrint(sl);SLDestroy(&sl);
}
int main()
{SLTest();return 0;
}
http://www.lryc.cn/news/620776.html

相关文章:

  • 常见的Jmeter压测问题
  • OpenCV 视频处理全解析
  • 力扣-295.数据流的中位数
  • 11、C 语言字符串函数总结
  • OpenCV 高斯模糊降噪
  • npm删除包
  • PyCharm性能优化与大型项目管理指南
  • C++:浅尝gdb
  • YouBallin正式上线:用Web3重塑创作者经济
  • 一种适用于 3D 低剂量和少视角心脏单光子发射计算机断层成像(SPECT)的可泛化扩散框架|文献速递-深度学习人工智能医疗图像
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • 【AAAI2025】计算机视觉|即插即用|FSTA:炸裂!这个即插即用模块,让你的SNN性能起飞!
  • DeepSeek补全IBM MQ 9.4 REST API 执行命令的PPT
  • 爬虫数据存储全攻略:从 Robots 协议到文件存储
  • 【深度学习新浪潮】VGGT待提升点分析及解决方案的思考
  • 基于大语言模型的爬虫数据清洗与结构化
  • pdf文件流或者本地文件读取
  • 掌握MATLAB三维可视化:从基础到实战技巧
  • OpenCV Canny 边缘检测
  • 【js】让项目支持倾听和朗读AI技术
  • OpenCV图像平滑处理方法详解
  • tp5集成elasticsearch笔记
  • 开疆智能Ethernet转ModbusTCP网关连接UR机器人配置案例
  • ComfyUI工作流不动了?
  • OpenCV 形态学操作
  • Spring AI PagePdfDocumentReader 全解析:基于 Apache PdfBox 的按页 PDF 读取实战
  • COLMAP进行密集重建,三维重建的步骤
  • [机器学习]08-基于逻辑回归模型的鸢尾花数据集分类
  • AUTOSAR汽车电子嵌入式编程精讲300篇-【自动驾驶】硬件在环(HIL)(二)
  • 第四天~在CANFD或CAN2.0的ARXML文件中实现Multiplexor多路复用信号实战