线性表基于顺序存储结构的基本操作的实现(初始化,创建,插入,删除,按值查找元素)

2023-10-27

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ElemType int
#define InitSize 30
typedef struct{
	ElemType *data;
	int MaxSize,length;//maxsize为数组所能容纳的最大个数,length为有效长度

}SqList;

void InitList(SqList &L,int maxsize)
{
	L.data= (ElemType *) malloc(sizeof(ElemType)*InitSize);
	if(L.data ==NULL)
	{
		printf("动态内存分配失败");
		exit(-1);
	}
	else
	{
		L.MaxSize = maxsize;
		L.length = 0;
	}
	return;
}

bool CreateList(SqList &L,int n)
{
	int i;
	if(n<0 || n>L.MaxSize)
		 false;
	printf("请向线性表中输入值:");
	for(i=0;i<n;i++)
	{
		//int temp;
		scanf("%d",&L.data[i]);
		L.length++;
		
	}
	
	return true;
	
}

bool InsertList(SqList &L,int i,ElemType e)
{
	if(i<1 || i>L.length+1)
	{
		printf("位置无效\n");
		return false;
	}
	
	if(L.length>=L.MaxSize)
	{
		printf("当前存储空间已经满\n");
		return false;
	}
	for(int j= L.length;j>=i;j--)
	{
		L.data[j] = L.data[j-1];
	}
	L.data[i-1] = e;
	L.length++;
	return true;

}


void PrintList(SqList L)
{
	printf("当前顺序表所有元素:\n");
	for(int i=0;i<L.length;i++)
	{
		printf("%d  ",L.data[i]);
	}
	printf("\n");
}

bool DeleteList(SqList &L,int i,ElemType &e)
{
	int j;
	if(i<1 || i>L.length)
	{
		printf("输入的位置无效!");
		return false;
	}
		
	e = L.data[i-1];
	
	for( j = i;j<L.length;j++)
	{
		L.data[j-1] =  L.data[j];
	}
	L.length--;
	return true;
}

int LocateElem(SqList L,ElemType e,ElemType &t)
{
	for(int i= 0;i<L.length;i++)
	{
		if(L.data[i] == e)
		{
			t=i+1;
		}
			 
	}
	return 0;
}

void ReverseList(SqList &L)
{
	int i,t;
	for(i = 0;i<L.length/2;i++)
	{
		t = L.data[i];
		L.data[i] = L.data[L.length-i-1];
		L.data[L.length-i-1] = t;
		
	}
}
int main(void)
{
	SqList L;
	int e;
	int t;
	InitList(L,20);
	CreateList(L,5);
	printf("%d\n",L.length);
	InsertList(L,3,9);
	PrintList(L);
	//DeleteList(L,3,e);
	//PrintList(L);
	LocateElem(L,3,t);
	printf("按值查找的位置为:%d\n",t);
	ReverseList( L);
	PrintList(L);
	
	return 0;

}


}![插入,删除,倒置元素思路图](https://img-blog.csdnimg.cn/20200607105721305.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Zlcm4xMjNn,size_16,color_FFFFFF,t_70#pic_center)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性表基于顺序存储结构的基本操作的实现(初始化,创建,插入,删除,按值查找元素) 的相关文章

  • 数据结构我好爱:链表作业->静态链表的插入与删除

    就以SDD个人的看法来说 静态链表与我们传统正常的单链表区别不大 我们可以想作正常的单链表即可 只是电脑帮助你分配了一块空间 然后你快乐地使用 取地址从而进行连接 它的地址是16位制的 而静态链表就纯靠个人 首先你去malloc一块空间 然
  • phpMyAdmin设置session过期时间方法

    本文转载自 https www fujieace com mysql session gc maxlifetime html 我们在用phpmyadmin登录后1440秒未活动后总是自动退出 提示 登陆超时 1440秒未活动 请重新登录 如
  • Unity3D -- Hit UFO

    目录 一 游戏内容 二 UML图 三 游戏的实现 1 DiskFactory 2 SSAction 3 SSActionManager 4 ISceneController 5 UserGUI 6 自定义组件 四 运行界面与代码传送门 五

随机推荐

  • WebSocket的理解以及应用场景

    文章目录 一 对 WebSocket 的理解 二 Websocket的使用方法如下 三 应用场景 一 对 WebSocket 的理解 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术 属于应用层协议 它基于TC
  • ajax 控制器返回数组,从浏览器中的javascript传递数组数据到使用ajax弹出mvc控制器...

    Vivin Paliat 32 你可以从JavaScript方面做到这一点 ajax type POST url myurl data myArray a notice that myArray matches the value for
  • Mysql安装和Navicat安装的步骤和出现的问题汇总

    Mysql安装过程 1 下载准备 首先需要准备下载Mysql和其图形化界面Navicat Mysql下载路径 选择zip下载就好 Navicat下载路径 2 Mysql安装 将下载好的zip解压到你要的文件夹中 配置好环境变量Path 路径
  • 循环队列的操作

    数据结构 严蔚敏 队列的顺序存储结构 循环队列 收藏 include stdafx h c1 h 程序名 include
  • [QT]moc生成文件分析

    首先看一下简单含有的signal slot代码 cpp view plain copy class myClass public QObject Q OBJECT public myClass myClass void trigger vo
  • 基于springboot人事管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue 数据库 MySQL5 7和Navicat管理工具结合 开发软件 IDEA Eclipse 是否Maven项目 是 前言 基于sp
  • LeetCode1047. 删除字符串中的所有相邻重复项

    1047 删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S 重复项删除操作会选择两个相邻且相同的字母 并删除它们 在 S 上反复执行重复项删除操作 直到无法继续删除 在完成所有重复项删除操作后返回最终的字符串 答案保证唯一 输入
  • jacob操作word增加表格 行列

    import com jacob activeX ActiveXComponent import com jacob com Dispatch import com jacob com Variant import com jacob co
  • leetcode线程题1116——打印零与奇偶数

    直接考虑信号量解决问题 输出完奇数偶数 释放输出0所需的信号量 对于本题没有想到的地方是调用过程 原代码编写的没有自己加入for循环 以为三个线程会不停被调用 一直不过 只输出 01 就结束了 根本没有循环起来 include
  • AIX 用户和组管理

    参考http www ibm com developerworks cn aix library au aixuseradmin 管理 IBM AIX 中的用户和组是管理员的重要责任之一 可以以许多种方式管理用户和组 可以通过 AIX Sy
  • Eigen中编译内联对效率的影响

    Eigen在src Core util Macros h中定义了 EIGEN STRONG INLINE EIGEN ALWAY INLINE EIGEN DONT INLINE 其中EIGEN STRONG INLINE在MSVC和ICC
  • Idea使用技巧

    很久没有写博客了啊 小小的程序猿爱因斯蛋忙于学习 最近学完了Spring SpringMVC SSM整合 SpringBoot一直在学 也敲了很多代码 出了很多错 改进了idea很多东西让我敲代码变得更加的舒坦 现在我给带来一些使用idea
  • 怎么设置html禁止直接打开,如何禁止网页自动跳转

    1 首先打开ie浏览器 点击菜单栏上的 工具 按钮 从弹出的菜单中选择 Internet选项 2 从弹出的 Internet选项 对话框中选择 安全 选项卡 并在 选择要查看的区域或更改安全设置 下方的窗口中选中 Internet 单击下方
  • 使用开源实时监控系统 HertzBeat 5分钟搞定 Mysql 数据库监控告警

    使用开源实时监控系统 HertzBeat 对 Mysql 数据库监控告警实践 5分钟搞定 Mysql 数据库介绍 MySQL是一个开源关系型数据库管理系统 由瑞典MySQL AB 公司开发 属于 Oracle 旗下产品 MySQL 是最流行
  • 华为云OBS配置及Java代码访问

    文章目录 maven依赖 yml文件中的配置 工具类 maven依赖
  • Pentaho Report Designer介绍

    Pentaho Report Designer是一款所见即所得的开源报表设计工具 在设计报表的时候 用户可以随意拖放和设置各种报表的控件 还可以快速方便地设置报表的数据来源 在报表的设计过程中 用户可以随时预览报表的结果 是一款不错的报表设
  • Android 中style attr declare-styleable theme以及引用方式

    大家知道一个控件在xml中定义可以设置属性 那知不知道设置属性有那些方式以及这些方式的优先级 是否知道属性的引用方式 lt 1 gt 控件的属性的设置的五种方式 直接在xml中直接定义 通过Style来引用外部样式 在对应的主题中定义外部S
  • Nginx+tomcat实现域名绑定、反向代理、负载均衡

    闲话少说 直奔主题 要解决的问题 通过浏览器输入一个域名 服务器端Nginx接收到请求 将请求转发给tomcat 非80端口 tomcat中的某个项目和域名绑定 Nginx官网 http nginx org tomcat官网 http to
  • 做技术和做产品的关系

    做芯片的龙心 科研的一个问题 指标问题的确很好 但能表现出来的 客户能感觉到的东西不多 这样意义就不是很大 要理解客户要达到的目的 而不是你技术上要达到的指标 你努力的东西需要的客户认可 客户不认可的 你做的技术再牛 也只是自我感觉很厉害
  • 线性表基于顺序存储结构的基本操作的实现(初始化,创建,插入,删除,按值查找元素)

    include