数据结构之顺序存储-顺序表的基本操作c/c++(创建、初始化、赋值、插入、删除、查询、替换、输出)

本文主要是介绍数据结构之顺序存储-顺序表的基本操作c/c++(创建、初始化、赋值、插入、删除、查询、替换、输出),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习参考博文:http://t.csdnimg.cn/Qi8DD

学习总结,同时更正原博主在顺序表中插入元素的错误。

数据结构顺序表——基本代码实现(使用工具:VS2022):

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define Size 7//建表语句
typedef struct
{int* elem; //定义数组,动态分配int length;//定义数组的长度int size;  //定义数组的分配空间
}Sqlist;//初始化线性结构顺序表
Sqlist InitList(Sqlist& L)   //返回类型为结构体
{L.elem = (int *)malloc(Size * sizeof(int));if (!L.elem)printf("申请储存空间失败");L.length = 0;L.size = Size;  //初始化顺序表的空间和长度return L;
}//顺序表赋值
Sqlist assignment(Sqlist& L)
{int i;for (i = 0; i < L.size-2; i++)//给顺序表分配五个字符空间{L.elem[i] = i + 1;L.length++;   //顺序表长度}return L;
}//输出顺序表储存情况
Sqlist Export(Sqlist L)
{printf("顺序表储存的情况如下:");for (int i = 0; i < L.length; i++){printf("%d  ", L.elem[i]);}printf("\n");return L;
}//插入数据
void ListInsert(Sqlist& L,int i, int e)  //i是插入的位置,e是插入的元素 
{if (i<1 || i>L.length + 1) //判断插入的数据是否合法exit(0);if (L.length >= Size)      //判断表的存储空间是否已满exit(0);for (int j = L.length - 1; j >= i - 1; j--)L.elem[j + 1] = L.elem[j];      //将第n位至第i位元素依次向右移动一个位置L.elem[i - 1] = e;     //将新元素e放到第i个位置L.length++;            //表长增加1
}//删除元素
bool ListDelete(Sqlist& L, int i,int &e)
{if (i<1 || i>L.length)return false;e = L.elem[i - 1];for (int j = i; j <= L.length - 1; j++)L.elem[j - 1] = L.elem[j];L.length--;return true;
}//查找元素
int LocateElem(Sqlist L, int e)
{for (int i = 0; i < L.length; i++){if (L.elem[i] == e)return i + 1;  //找到了,返回元素的位置}return 0; //没找到,返回0
}//替换指定数据
Sqlist Replace(Sqlist L, int a, int b)//将a替换成b
{int i = LocateElem(L, a);L.elem[i - 1] = b;return L;
}//主函数
int main()
{Sqlist L;L = InitList(L);L = assignment(L);Export(L);printf("\n --------------------------- \n");int i;int e;printf("请输入要插入的位置:");scanf_s("%d", &i);printf("请输入要插入的元素:");scanf_s("%d", &e);if (i > L.size + 1 || i < 0){printf("输入的数据有误\n");exit(0);}ListInsert(L, i, e);Export(L);//输出顺序表printf("\n");printf("\n --------------------------- \n");printf("请输入删除的位置:");scanf_s("%d", &i);if (i > L.size || i < 0){printf("输入的位置错误\n");exit(0);}int a;ListDelete(L, i,a);printf("删除的元素是:%d\n", a);Export(L);printf("\n --------------------------- \n");printf("查找5的位置:");//查找5的位置int b = LocateElem(L, 5);printf("5的位置是:%d",b);Export(L);printf("\n --------------------------- \n");printf("用 55 替换 5\n");Replace(L, 5, 55);Export(L);
}

这篇关于数据结构之顺序存储-顺序表的基本操作c/c++(创建、初始化、赋值、插入、删除、查询、替换、输出)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820366

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2