热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

顺序表的操作代码c+写法

**@Description:描述*@Version:1.0*@Autor:Nanke_南柯*@Date:2021-10-0414:32:10*@LastEditors:Nanke

/*
* @Description: 描述
* @Version: 1.0
* @Autor: Nanke_南柯
* @Date: 2021-10-04 14:32:10
* @LastEditors: Nanke_南柯
* @LastEditTime: 2021-10-08 21:20:41
*/
#include
#include
// Status 是函数类型 其值是函数结果状态代码
typedef int Status; //定义函数要返回什么类型
typedef int ElemType;
typedef struct
{
int max;
int length;
ElemType *elem; //数组当中首原属的地址
} SqList; //顺序表类型
// 初始化
Status init(SqList &L, int MAXSIZE)
{
L.max = MAXSIZE;
L.length = 0;
L.elem = (ElemType *)malloc(sizeof(ElemType) * MAXSIZE); //为顺序表动态分配存储空间
if (!L.elem)
return false; //如果分配失败了
return true;
}
// 插入
Status insert(SqList &L, int i, ElemType e)
{
//判断传入下标是否小于0 或 大于数组长度-1
if (i <0 || i > L.max - 1)
return false;
if (L.max == L.length)
return false;
for (int j = L.length - 1; j >= i - 1; j--)
{
L.elem[j + 1] = L.elem[j]; //元素后移
}
L.elem[i] = e; //将新元素放入第i个位置
L.length++; //表长+1
return true;
}
// 删除
Status deletes(SqList &L, int i)
{
if (i <0 || i > L.max)
return false;
for (int j = i; j <= L.length + 1; j++)
{
L.elem[j - 1] = L.elem[j]; //被删除元素之后的元素前移
}
L.length--; //表长-1
return true;
}
// 销毁
void destory(SqList &L)
{
L.max = 0;
L.length = 0;
free(L.elem); //从内存中释放
}
// 清空
void clear(SqList &L)
{
L.max = 0;
L.length = 0;
}
// 获取长度
int getLength(SqList L)
{
return (L.length);
}
// 是否为空
int isEmpty(SqList L)
{
if (L.length == 0)
{
return 1;
}
else
{
return 0;
}
}
//取值
int getElem(SqList L, int i, ElemType &e)
{
if (i L.length)
return false;
e = L.elem[i - 1];
return true;
}
// 输出
Status sc(SqList L)
{
for (int i = 0; i <= L.length - 1; i++)
{
printf("%d ", L.elem[i]);
}
printf("\n");
return true;
}
int main()
{
SqList list;
init(list, 2);
insert(list, 0, 2);
insert(list, 1, 3);
// printf("%d\n", getLength(list));
// printf("%d\n", isEmpty(list));
// deletes(list,0);
// printf("%d\n",list.length);
sc(list);
// clear(list);
// destory(list);
return 0;
}

 



推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 如何在跨函数中使用内存?
    本文介绍了在跨函数中使用内存的方法,包括使用指针变量、动态分配内存和静态分配内存的区别。通过示例代码说明了如何正确地在不同函数中使用内存,并提醒程序员在使用动态分配内存时要手动释放内存,以防止内存泄漏。 ... [详细]
author-avatar
houjiajun
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有