当前位置: 首页 > news >正文

顺序表的基本操作_顺序表基本操作上机实验

一、实验目的

理解线性结构的基本概念,掌握两种基本的存储结构:顺序存储结构(顺序表)和链式存储结构(单链表);用C语言实现在两种存储结构上的对应操作(包括创建、删除插入元素、遍历等),巩固强化C程序设计的基本方法和能力。

二、实验内容

完成顺序表的创建、元素删除、遍历等操作,具体内容如下:

有序的一组整数{1,2,3,4,6},设计顺序表并实现以下操作:

A.初始化一个空的顺序表;

B.从键盘依次输入上述数据添加到顺序表中;

C.删除表中的第四个数据元素;

D.显示B、C操作后顺序表中的内容。

#include <stdio.h>
#define ListSize 100 //表空间的大小
typedef int DataType;//数据类型
typedef int Status;
//定义顺序表结构体
typedef struct
{
	DataType data[ListSize];  //数据域
	int length;		 //当前的表长度
}SqListNode,*SqList;

//顺序表的初始化
void InitSqList(SqList L)//顺序表的初始化即将表的长度置为0
{
	L->length=0;
}

Status Delete(SqList L,int i)
{
	int j;
	if(L->length==0)
	return 0;
	for(j=i;j<L->length;j++)
		{
		L->data[j-1]=L->data[j];
		}
	L->length--;
	return 1;
}

int Insert_SL(SqList L,int i,DataType x)//按位置插入数据,i-指定插入位置(i前面插入),x-插入值
	{
	int j;	
	if (L->length >= ListSize)//判断表空间溢出
		{
			printf("表空间溢出n");
			return 0;	
		}
	if(i<1 || i>ListSize)//检验插入元素是否合法
	{
	printf("插入位置:%d不合法!n",i);
	return 0;
	}
	else
	{
		for(j=L->length-1;j>=i-1;j--)//数组元素后移,为插入元素空出位置
		{
		L->data[j+1]=L->data[j];
		}
	L->data[i-1]=x;//插入数据元素
	L->length++;//表长加1
	}
	return 1;
}

int SqListPrint(SqList L)//打印顺序表
{
	int i;
	if(L->length==0)
{
	printf("顺序表为空n");
	return 0;
}
printf("顺序表:n");
for(i=0;i<L->length;i++)
printf("%d ",L->data[i]);
printf("n");
return 1;
}

int main()
{
int i;int num=5;
int delete_location;//删除位置
int isDeleted;//判断是否删除成功
DataType x;	
SqListNode L,*lp=&L;
InitSqList(lp);//表的初始化
	
for(i=1;i<=num;i++)//录入数据
{
	printf("输入第%d个元素:",i);
	scanf("%d",&x);
	if(Insert_SL(lp,i,x)!=1)
	return 0;
}
SqListPrint(lp);//打印顺序表
printf("请输入您要删除的位置:");
scanf("%d",&delete_location);
printf("n");
isDeleted=Delete(&L,delete_location);
if(isDeleted){
printf("n");
SqListPrint(lp);//打印顺序表;
}
return 1;
}

相关文章:

  • lede软路由Mysql未运行_Proxmox VE(PVE)安装LEDE/OpenWrt 软路由系统|虚拟机环境
  • mysql的awr生成语句_如何生成指定SQL语句的AWR报表
  • mysql对建表语句长度的限制_MySQL 建表字段长度的限制
  • 编译安装mysql加入services_编译安装MySQL数据库
  • win7下ado连接mysql_提示连接无法用于执行此操作_提示错误“连接无法用于执行此操作。再此上下文中可能已被关闭或者无效”...
  • java sha_原生Java实现SHA256算法
  • java spring 事务控制器_spring之事务总结
  • java adt怎么使用_Java ADT中如何使用ImageView控件
  • java setforeground_java 中的JProgressBar设置前景色foreground无效果
  • python数字加密货币_GitHub - cugbliwei/cryptocurrency: 数字加密货币项目
  • java实现Tomasulo算法_并行计算机组成与设计pdf
  • java实时数据画图_Java中的实时绘图
  • java连接sql server数据库步骤_JDBC连接sql server数据库的详细步骤和代码 转
  • Java怎么保证数据一致性_连续调用多个外部系统写接口保证数据一致性的思路...
  • js多层对象数组 合并_js 将多个对象合并成一个对象 assign方法的实现
  • canvas 高仿 Apple Watch 表盘
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • JavaScript异步流程控制的前世今生
  • Java超时控制的实现
  • Java应用性能调优
  • 安卓应用性能调试和优化经验分享
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 聊聊flink的TableFactory
  • 移动端 h5开发相关内容总结(三)
  • 字符串匹配基础上
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #《AI中文版》V3 第 1 章 概述
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (11)MATLAB PCA+SVM 人脸识别
  • (function(){})()的分步解析
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)EOS中账户、钱包和密钥的关系
  • (转)VC++中ondraw在什么时候调用的
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net MVC + EF搭建学生管理系统
  • .net 发送邮件
  • .Net7 环境安装配置
  • .NET框架设计—常被忽视的C#设计技巧
  • .net连接oracle数据库
  • .Net下的签名与混淆
  • .so文件(linux系统)
  • :O)修改linux硬件时间
  • @angular/cli项目构建--http(2)
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ SNOI 2013 ] Quare
  • [1127]图形打印 sdutOJ
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会