数据结构之顺序存储-顺序表的基本操作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

相关文章

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函