C/C++实现线性顺序表的示例代码

目录
  • 线性顺序表简介
  • C语言实现代码
  • C++语言实现代码

线性顺序表简介

使用顺序存储结构的线性存储结构的表为线性顺序表,线性存储结构是元素逻辑结构一对一,顺序存储结构是元素物理结构连续,线性顺序表操作没有限制,线性顺序表优点是可以使用下标获取和修改元素,线性顺序表缺点是不可以直接插入和删除元素.

C语言实现代码

#include<stdio.h>//包含标准输入输出文件
#include<stdlib.h>//包含标准库文件
typedef struct//定义类型定义结构体
{
	int*Array,Length;//定义整数指针变量数组,定义整数变量长度
}Sequential_List;//定义顺序表
Sequential_List Sequential_List_Create(void)//顺序表创造
{
	return(Sequential_List){malloc(0)};//返回顺序表数组赋值为分配0字节返回值并且退出函数
}
void Sequential_List_Destroy(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/)//顺序表销毁
{
	free(sequential_list->Array);//释放顺序表数组
}
void Sequential_List_Insert(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/,int Insert_Index/*定义整数变量插入索引*/,int Insert_Element/*定义整数变量插入元素*/)//顺序表插入
{
	sequential_list->Array=realloc(sequential_list->Array,++sequential_list->Length*sizeof(int));//顺序表数组赋值为重新分配顺序表长度累加1乘整数字节返回值
	for(int Index=sequential_list->Length;Index>Insert_Index;--Index)//定义整数变量索引赋值为顺序表长度,索引大于插入索引,索引累减1
		sequential_list->Array[Index]=sequential_list->Array[Index-1];//顺序表数组第索引个元素赋值为顺序表数组第索引减1个元素
	sequential_list->Array[Insert_Index]=Insert_Element;//顺序表数组第插入索引个元素赋值为插入元素
}
void Sequential_List_Delete(Sequential_List*sequential_list/*定义顺序表指针变量顺序表*/,int Delete_Index/*定义整数变量删除索引*/)//顺序表删除
{
	--sequential_list->Length;//顺序表长度累减1
	for(int Index=Delete_Index;Index<sequential_list->Length;++Index)//定义整数变量索引赋值为删除索引,索引小于顺序表长度,索引累加1
		sequential_list->Array[Index]=sequential_list->Array[Index+1];//顺序表数组第索引个元素赋值为顺序表数组第索引加1个元素
}
int Sequential_List_Obtain(Sequential_List sequential_list/*定义顺序表变量顺序表*/,int Obtain_Index/*定义整数变量获取索引*/)//顺序表获取
{
	return sequential_list.Array[Obtain_Index];//返回顺序表数组第获取索引个元素并且退出函数
}
int Sequential_List_Obtain_Length(Sequential_List sequential_list/*定义顺序表变量顺序表*/)//顺序表获取长度
{
	return sequential_list.Length;//返回顺序表长度并且退出函数
}
int main(void)//主函数
{
	Sequential_List sequential_list=Sequential_List_Create();//定义顺序表变量顺序表赋值为顺序表创造返回值
	int Select,Element,Index;//定义整数变量选择,定义整数变量元素,定义整数变量索引
	do{
		scanf("%i",&Select);//格式扫描选择
		if(Select==1)//选择等于1
		{
			scanf("%i%i",&Index,&Element);//格式扫描索引和元素
			Sequential_List_Insert(&sequential_list,Index,Element);//顺序表插入第索引个元素为元素
		}
		else if(Select==2)//选择等于2
		{
			scanf("%i",&Index);//格式扫描索引
			Sequential_List_Delete(&sequential_list,Index);//顺序表删除第索引个元素
		}
		else if(Select==3)//选择等于3
		{
			scanf("%i",&Index);//格式扫描索引
			printf("%i",Sequential_List_Obtain(sequential_list,Index));//格式打印顺序表获取第索引个元素返回值
		}
		else if(Select==4)//选择等于4
			printf("%i",Sequential_List_Obtain_Length(sequential_list));//格式打印顺序表获取长度返回值
	}while(Select);//选择不等于0
	Sequential_List_Destroy(&sequential_list);//顺序表销毁
}

C++语言实现代码

#include<iostream>//包含输入输出流文件
template<typename Type/*类型*/>struct Sequential_List//定义模板结构体顺序表
{
	Type*Array=new Type;//定义类型指针变量数组赋值为新类型字节返回值
	int Length=0;//定义整数变量长度赋值为0
	~Sequential_List(void)//顺序表析构
	{
		delete Array;//删除数组
	}
	void Insert(int Insert_Index/*定义整数变量插入索引*/,Type Insert_Element/*定义类型变量插入元素*/)//插入
	{
		Type*temporary_Array=Array;//定义类型指针变量临时数组赋值为数组
		Array=new Type[++Length];//数组赋值为新长度累加1乘类型字节返回值
		for(int Index=0;Index<Length;++Index)//定义整数变量索引赋值为0,索引小于长度,索引累加1
			Array[Index]=temporary_Array[Index];//数组第索引个元素赋值为临时数组第索引个元素
		delete temporary_Array;//删除临时数组
		for(int Index=Length-1;Index>Insert_Index;--Index)//定义整数变量索引赋值为长度减1,索引大于插入索引,索引累减1
			Array[Index]=Array[Index-1];//数组第索引个元素赋值为数组第索引减1个元素
		Array[Insert_Index]=Insert_Element;//数组第插入索引个元素赋值为插入元素
	}
	void Delete(int Delete_Index/*定义整数变量删除索引*/)//删除
	{
		--Length;//长度累减1
		for(int Index=Delete_Index;Index<Length;++Index)//定义整数变量索引赋值为删除索引,索引小于长度,索引累加1
			Array[Index]=Array[Index+1];//数组第索引个元素赋值为数组第索引加1个元素
	}
	int Obtain(int Obtain_Index/*定义整数变量获取索引*/)//获取
	{
		return Array[Obtain_Index];//返回数组第获取索引个元素并且退出函数
	}
	int Obtain_Length(void)//获取长度
	{
		return Length;//返回长度并且退出函数
	}
};
int main(void)//主函数
{
	Sequential_List<int>sequential_list;//定义顺序表整数变量顺序表
	int Select,Element,Index;//定义整数变量选择,定义整数变量元素,定义整数变量索引
	do{
		std::cin>>Select;//标准输入选择
		if(Select==1)//选择等于1
		{
			std::cin>>Index>>Element;//标准输入索引和元素
			sequential_list.Insert(Index,Element);//顺序表插入第索引个元素为元素
		}
		else if(Select==2)//选择等于2
		{
			std::cin>>Index;//标准输入索引
			sequential_list.Delete(Index);//顺序表删除第索引个元素
		}
		else if(Select==3)//选择等于3
		{
			std::cin>>Index;//标准输入索引
			std::cout<<sequential_list.Obtain(Index);//标准输出顺序表获取第索引个元素返回值
		}
		else if(Select==4)//选择等于4
			std::cout<<sequential_list.Obtain_Length();//标准输出顺序表获取长度返回值
	}while(Select);//选择不等于0
}

到此这篇关于C/C++实现线性顺序表的示例代码的文章就介绍到这了,更多相关C++线性顺序表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言线性表的顺序表示与实现实例详解

    1.概述 通常来说顺序表是在计算机的内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性数据结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构就是顺序结构. 采用顺序存储结构的线性表简称为" 顺序表".顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤

  • C语言编程数据结构线性表之顺序表和链表原理分析

    目录 线性表的定义和特点 线性结构的特点 线性表 顺序存储 顺序表的元素类型定义 顺序表的增删查改 初始化顺序表 扩容顺序表 尾插法增加元素 头插法 任意位置删除 任意位置添加 线性表的链式存储 数据域与指针域 初始化链表 尾插法增加链表结点 头插法添加链表结点 打印链表 任意位置的删除 双向链表 测试双向链表(主函数) 初始化双向链表 头插法插入元素 尾插法插入元素 尾删法删除结点 头删法删除结点 doubly-Linked list.c文件 doubly-Linkedlist.h 线性表的定

  • C语言线性表中顺序表超详细理解

    目录 一.本章重点 二.线性表 三.顺序表 四.静态顺序表接口实现 4.1顺序表初始化 4.2顺序表打印 4.3顺序表尾插 4.4顺序表尾删 4.5顺序表头插 4.6顺序表头删 4.7顺序表任意位置插入 4.8顺序表任意位置删除 五.动态顺序表接口实现 5.1顺序表的初始化 5.2顺序表打印 5.3顺序表尾插 5.4顺序表尾删 5.5顺序表头插 5.6顺序表头删 5.7顺序表任意位置插入 5.8顺序表任意位置删除 六.在线0j练习 一.移除元素(力扣) 二.合并两个有序数组(力扣) 一.本章重点

  • C语言的线性表之顺序表你了解吗

    目录 线性表 —— 顺序表 (C语言) 1. 顺序表的储存结构 2. 顺序表的基本操作 2.1 顺序表的插入 2.2 顺序表的查找 2.3 顺序表的删除 总结 线性表 —— 顺序表 (C语言) 概念 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表中的数据元素,这种表示也称做线性表的顺序储存结构或顺序映像.通常,称这种存储结构的线性表为顺序表 (Sequential List) .其特点是,逻辑上相邻的数据元素,其物理次序也是相邻的. 1. 顺序表的储存结构 #include <st

  • C/C++实现线性顺序表的示例代码

    目录 线性顺序表简介 C语言实现代码 C++语言实现代码 线性顺序表简介 使用顺序存储结构的线性存储结构的表为线性顺序表,线性存储结构是元素逻辑结构一对一,顺序存储结构是元素物理结构连续,线性顺序表操作没有限制,线性顺序表优点是可以使用下标获取和修改元素,线性顺序表缺点是不可以直接插入和删除元素. C语言实现代码 #include<stdio.h>//包含标准输入输出文件 #include<stdlib.h>//包含标准库文件 typedef struct//定义类型定义结构体 {

  • C语言实现动态顺序表的示例代码

    目录 顺序表概念及结构 基本操作 功能实现 程序运行 顺序表概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改. 分类: 一般分为静态顺序表和动态顺序表: 静态顺序表:数组大小是固定的用完了无法增容:同时我们无法控制给数组开多少空间合适,开少了,空间不够:开多了,有回会存在空间浪费: 动态顺序表:空间是可以变动的,空间满了我们就增容:解决了静态顺序表的空间不足问题,同时也在一定程度上减少了空间浪费: 因此本篇博客主要实现

  • Python数据结构之顺序表的实现代码示例

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存储在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一个元素所占的空间. 追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加1删除是将该位置后面的元素往前移动,覆盖该元素,然

  • C语言实现动态顺序表的实现代码

    C语言实现动态顺序表的实现代码 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 静态实现:结构体内部只需两个成员,其中一个为固定大小(MAX)的数组,用来存放我们的数据.数组大小我们可以通过在头文件中改变MAX的值来改变. 动态实现:在内存中开辟一块空间,可以随我们数据数量的增多来扩容. 来看看动态的顺序表实现: 1.seqli

  • C语言顺序表的实现代码

    本文实例为大家分享了C语言实现顺序表的具体代码,供大家参考,具体内容如下 seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> #include<assert.h> #define SEQLIST_INIT_SIZE 8 #define INC_SIZE 3 //空间增量的大小 typedef int ElemType; typedef stru

  • C++顺序表的实例代码

    本文实例为大家分享了C++实现顺序表的具体代码,供大家参考,具体内容如下 #include <iostream> using namespace std; typedef int DataType; class SeqList { public: SeqList() :_a(NULL) , _size(0) , _capacity(0) {} SeqList(const SeqList& s) :_a(new DataType[s._size]) , _size(s._size) ,

  • Java中利用Alibaba开源技术EasyExcel来操作Excel表的示例代码

    一.读Excel 1.Excel表格示例 2.对象示例 @Data public class DemoData { private String string; private Date date; private Double doubleData; } 3.监听器(重点部分) // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 public class DemoDataListener e

  • MySQL/MariaDB 如何实现数据透视表的示例代码

    前文介绍了Oracle 中实现数据透视表的几种方法,今天我们来看看在 MySQL/MariaDB 中如何实现相同的功能. 本文使用的示例数据可以点此下载. 使用 CASE 表达式和分组聚合 数据透视表的本质就是按照行和列的不同组合进行数据分组,然后对结果进行汇总:因此,它和数据库中的分组(GROUP BY)加聚合函数(COUNT.SUM.AVG 等)的功能非常类似. 我们首先使用以下 GROUP BY 子句对销售数据进行分类汇总: select coalesce(product, '[全部产品]

  • 使用sharding-jdbc实现水平分表的示例代码

    目录 在mysql中新建数据库sharding_db,新增两张结构一样的表student_1和student_2. 添加依赖 编写配置文件 编写实体类 编写mapper接口 编写测试类 执行测试 在mysql中新建数据库sharding_db,新增两张结构一样的表student_1和student_2. CREATE TABLE `student_1` ( `ID` bigint(20) NOT NULL , `NAME` varchar(50) CHARACTER SET utf8mb4 CO

  • 使用sharding-jdbc实现水平分库+水平分表的示例代码

    前面的文章使用sharding-jdbc实现水平分表中详细记录了如何使用sharding-jdbc实现水平分表,即根据相应的策略,将一部分数据存入到表1中,一部分数据存入到表2中,逻辑上为同一张表,分表操作全部交由sharding-jdbc进行处理. 可能根据需要,还需要将一张表的数据拆分存入到多个数据库中,甚至多个数据库的多个表中,使用sharding-jdbc同样可以实现. 重复的篇幅则不再赘述,下面重点记录升级的过程. 分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中

随机推荐