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

 更新时间:2022年05月27日 11:00:12   作者:学编程的闹钟  
使用顺序存储结构的线性存储结构的表为线性顺序表。本文将分别利用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++线性顺序表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • opencv3/C++绘制几何图形实例

    opencv3/C++绘制几何图形实例

    今天小编就为大家分享一篇opencv3/C++绘制几何图形实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • opencv利用霍夫变换检测直线进行图片校正

    opencv利用霍夫变换检测直线进行图片校正

    这篇文章主要为大家详细介绍了opencv利用霍夫变换检测直线对图片进行校正,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • C++ 和 C# 中的 lambda的方法技巧

    C++ 和 C# 中的 lambda的方法技巧

    这篇文章主要介绍了C++ 和 C# 中的 lambda的方法技巧,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • C++实现约瑟夫环的循环单链表

    C++实现约瑟夫环的循环单链表

    这篇文章主要为大家详细介绍了C++实现约瑟夫环的循环单链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++开发之PugiXML库基础用法示例详解

    C++开发之PugiXML库基础用法示例详解

    PugiXML库是一个功能强大、简单易用的C++ XML解析库,它提供了一组方便的函数来解析、创建和修改XML文档,本文介绍了如何使用PugiXML库来解析、创建和修改XML文档,以及如何处理错误和异常,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • VC枚举串口端口应用

    VC枚举串口端口应用

    这篇文章主要介绍了VC枚举串口端口应用,罗列了常见的一些串口端口的应用实例,需要的朋友可以参考下
    2014-10-10
  • C语言 完整游戏项目坦克大战详细代码

    C语言 完整游戏项目坦克大战详细代码

    《坦克大战》以二战坦克为题材,既保留了射击类游戏的操作性,也改进了射击类游戏太过于复杂难玩的高门槛特点,集休闲与竞技于一身。经典再度袭来,流畅的画面,疯狂的战斗,让玩家再次进入疯狂坦克的世界。玩家的目标是控制坦克躲避危险,消灭掉所有的敌人即可进入下一关
    2021-11-11
  • C语言使用深度优先搜索算法解决迷宫问题(堆栈)

    C语言使用深度优先搜索算法解决迷宫问题(堆栈)

    这篇文章主要介绍了C语言使用深度优先搜索算法解决迷宫问题,涉及C语言堆栈的使用与深度优先算法解决迷宫问题的相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • CFile与CStdioFile的文件读写使用方法详解

    CFile与CStdioFile的文件读写使用方法详解

    以下是对CFile与CStdioFile的文件读写使用方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • 基于Qml实现水印工具

    基于Qml实现水印工具

    这篇文章主要介绍了如何在 Qml 中实现一个简单但功能强大的水印工具,包括水印文本的透明度、颜色、字体大小、旋转角度等自定义功能,需要的可以参考下
    2024-12-12

最新评论