4-数据结构-线性表-顺序表的查找和修改以及总结

2023-10-27

问题:
        顺序表的查找以及修改,跟数组一样,直接进行遍历查找,以及直接找到数组中某个值

思路:

  1. 查找——目的时找到对应值的数组下标
  2. 输入所需数组,所需查找的值。对顺序表中数组进行遍历,若找到,则返回下标即可。
  3. 输入你想删除的值,然后实现删除操作。
  4. 流程——1.先输入所需删除的值。2.再用查找,找到其下标。3.若返回的下标合法,则进行删除操作。
    printf("你想删除哪个数\n");
    	int num;
    	scanf("%d",&num);
    	int n = sqfind(&s,num); 
    	if(n != -1) 
    	{
    		sqpop(&s,n);
    		sqprintf(&s);
    	}
    	else
    		printf("找不到你说的这个数啊,老铁\n");

  5. 若想删除所有一样的数,若删除所有的2,只需循环,之后再查找即可。
    printf("你想删除哪个数\n");
    	int t;
    	scanf("%d",&t);
    	int pos = sqfind(&s,t); 
    	while(pos != -1) 
    	{
    		sqpop(&s,pos);
    		pos = sqfind(&s,t);
    		sqprintf(&s);
    	}
    

  6. 修改,一样的操作,先给修改函数写好。只需给该下标处的值,赋值,进行覆盖即可。

    printf("你想修改哪个数\n");
    	int shu;
    	scanf("%d",&shu);
    	int q = sqfind(&s,shu); 
    	if(q != -1) 
    	{
    		printf("修改成什么\n");
    		int num01;
    		scanf("%d",&num01);
    		sqmodify(&s,q,num01);
    		sqprintf(&s);
    	}
    	else
    		printf("找不到你说的这个数啊,老铁\n");

  7. 下面是所有代码总结。包含前面顺序表的定义,初始化,打印,检查,插入和删除

代码如下:

#include <stdio.h>
#include <stdlib.h>
//定义顺序表
typedef int sqdatatype;
typedef struct sllist
{
	sqdatatype *a;
	int size;
	int capacity;
}sl; 
//初始化顺序表
void sqinint(sl *s)
{
	s->a=NULL;
	s->capacity=0;
	s->size=0;
}
//打印顺序表
void sqprintf(sl *s)
{
	int i;
	for(i=0;i<s->size;i++)
	{
		printf("%d ",s->a[i]);
	}
	printf("当前容量为%d\n",s->capacity);
}
//检查顺序表为空或满,不满足,则扩容
void sqcheck(sl *s)
{
	if(s->capacity==s->size)
	{
		int newcapacity= s->capacity == 0 ? 4 : s->capacity * 2;
		sqdatatype *temp=(sqdatatype*)realloc(s->a,sizeof(sqdatatype)*newcapacity);
		if(temp==NULL)
		{
			printf("扩容失败\n"); 
		//	exit(-1);
		}
		s->a=temp;
		s->capacity=newcapacity;
	}
 } 
//插入某个位置
void sqpush(sl *s,int i,int w)//这里的i插入的位置为数组下标 
{
	if(i<0 || i>s->size)
	{
		printf("插入位置不合法\n");
	//	exit(-1);	
	}
	sqcheck(s);
	int end =s->size-1;
	while(end >= i )
	{
		s->a[end+1]=s->a[end];
		end--;
	}	
	s->a[i]=w;
	s->size++;
} 
//删除某个位置
void sqpop(sl *s,int i)
{
	if(i<0 || i>=s->size)
	{
		printf("删除位置不合法\n");
	//	exit(-1);	
	}	
	sqcheck(s);
	int begin = i;
	while(begin < s->size-1)
	{
		s->a[begin]=s->a[begin+1];
		begin++; 
	}
	s->size--;
} 
//头插法插入 
void sqhead(sl *s,int w)
{
	sqpush(s,0,w);//所传的位置值,都为数组下标; 
}
//尾插法插入
void sqrear(sl *s,int w)
{
	sqpush(s,s->size,w);	
} 
//查找数值——所处下标并返回
int sqfind(sl *s,int n)
{
	if(s==NULL)
	printf("该顺序表无效\n");
	int i;
	for(i=0;i<s->size;i++)
	{
		if(s->a[i]==n)
		return i;
	}
	return -1;
} 
void sqmodify(sl *s,int i,int w)
{
	if(s==NULL)
	{
		printf("修改时,顺序表不存在\n");
	}
	s->a[i]=w;
}
int main()
{
	sl s;
	sqinint(&s);
	sqhead(&s,5);
	sqhead(&s,2);
	sqhead(&s,2);
	sqhead(&s,2);
	sqhead(&s,5);
	sqprintf(&s);
	
	sqpush(&s,1,5000);
	sqprintf(&s);
	sqpop(&s,1);
	sqprintf(&s);
	/*printf("你想删除哪个数\n");
	int num;
	scanf("%d",&num);
	int n = sqfind(&s,num); 
	if(n != -1) 
	{
		sqpop(&s,n);
		sqprintf(&s);
	}
	else
		printf("找不到你说的这个数啊,老铁\n");
		*/
	//若想删除所有的2
	printf("你想删除哪个数\n");
	int t;
	scanf("%d",&t);
	int pos = sqfind(&s,t); 
	while(pos != -1) 
	{
		sqpop(&s,pos);
		pos = sqfind(&s,t);
		sqprintf(&s);
	}

	printf("你想修改哪个数\n");
	int shu;
	scanf("%d",&shu);
	int q = sqfind(&s,shu); 
	if(q != -1) 
	{
		printf("修改成什么\n");
		int num01;
		scanf("%d",&num01);
		sqmodify(&s,q,num01);
		sqprintf(&s);
	}
	else
		printf("找不到你说的这个数啊,老铁\n");
	
	
	return 0;
}

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

4-数据结构-线性表-顺序表的查找和修改以及总结 的相关文章

  • 实现基于LSTM的情感分析

    文章目录 实现基于LSTM的情感分析 1 情感分析 常用的数据集及开源库 1 1 常用数据集 1 1 1 亚马逊产品评价 1 1 2 Yelp餐饮评价 1 1 3 电影评价 1 1 4 亚马逊食品评价 1 1 5 航空公司Twitter评价
  • JeeSite入门介绍(一)

    JeeSite特点 高效 高性能 强安全性属于开源 JavaEE快速开发平台 接私活的最佳助手 JeeSite是在Spring Framework基础上搭建的一个Java基础开发平台 以Spring MVC为模型视图控制器 MyBatis为

随机推荐

  • 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    前言 使用Pycharm创建新环境后 可能会使用pip安装一下包 但是会出现如下或类似如下报错 因为刚开始报错是显示ModuleNotFoundError No module named requests 所以就用pip instal re
  • Go Web编程实战(7)----并发goroutine

    目录 什么是goroutine 使用方式 什么是goroutine 在Go语言中 每一个并发执行的活动被称为goroutine 使用go关键字可以创建goroutine 其完整定义如下 go func name 其中 go是关键字 需要放在
  • junit5 mock静态方法 Mockito.mockStatic()

    junit5 mock静态方法 环境 jdk11 junit5 springboot pom
  • 记一次ubuntu无法显示图形化界面解决方法

    系统 16 04 因为未知问题 我的双系统ubuntu进入之后就只剩下了桌面 包括上方条形菜单栏和左侧图标都显示不出来了 并且ctrl alt T无法呼出终端 刚开始判断是系统的desktop出现了问题 重装了desktop和unity之后
  • linux重启ipv6_Linux关闭、开启、配置IPv6

    确认IPV6是否开启 如果出现含有以下粗体显示的部分 代表您的机器上IPV6已经开启 1 使用ifconfig查看自己的IP地址是否含有IPv6地址 inet6 addr fe80 213 d4ff fe05 b2ed 64 Scope L
  • 存储引擎

    什么是存储引擎 数据库相当于文件夹 表相当于文件 文件有多种不同类型 那么表也应该有不同类型 这句话说得真是太完美了 为什么乔碧萝还不来找我 表类型又称为存储引擎 存储引擎也称为表类型 Oracle和SQL server 等数据库只有一种存
  • 通过分析三篇物联网论文的分析与总结

    Title Abstract The importance of the IoT security research domain lies in its critical role in addressing the security c
  • java 后台 小程序微信支付

    java 后台 小程序微信支付 步骤说明 微信公众平台支付接口调试工具 1 生成字符串 appid appId body 测试商品名称 mch id 商户号 nonce str bf0d5ffe64fc44a3b0c101ead5a6a56
  • ElasticSearch 通用化批量存储封装设计

    ElasticSearch 通用化批量存储封装设计 一 设计需要满足的功能场景 二 约定 三 功能封装 1 枚举 2 定义接口 3 功能实现 一 设计需要满足的功能场景 为了满足在工作中 不用频繁的去写繁琐的 ES 存储的代码 一切都是为了
  • 页面正在加载中 ...

    lt script language JavaScript type text javascript gt var t id setInterval animate 30 var pos 0 var dir 2 var len 0 func
  • (正则)校验 8-16位,必须含有特殊字符、而大写字母、小写字母、数字至少包含其中两项

    function passwordValid str var rule lw a z uw A Z nw 0 9 sw lt gt function reg str patter var reg new RegExp patter if r
  • eclipse:the selection cannot be run on any server解决办法

    我导入一个项目 tomcat是7 0版本的 我的eclipse用的是8 5版本的 改了jar包后还是发现会出现如此错误 the selection cannot be run on any server 后来我就找到我的eclipse项目工
  • SVN分支

    Branch 选项会给开发者创建出另外一条线路 当有人希望开发进程分开成两条不同的线路时 这个选项会非常有用 比如项目 demo 下有两个小组 svn 下有一个 trunk 版 由于客户需求突然变化 导致项目需要做较大改动 此时项目组决定由
  • 【秋招必备】JVM性能调优面试题(2022最新版)

    作为 Java 的从业者 在找工作的时候 一定会被问及关于 JVM 相关的知识 JVM 知识的掌握程度 在很多面试官眼里是候选人技术深度的一个重要评判标准 小编分享的这份Java后端开发面试总结包含了JavaOOP Java集合容器 Jav
  • mybatis plus中编写sql语句

    sql 语句是写在对应的xml文件中 首先要解决maven默认不加载xml文件的问题 1 首先要写入相关配置文件 在pom 导入下面内容
  • 网工学习笔记(四):办公网络布线

    办公网络布线 1 综合布线系统主要由哪几个子系统组成 工作间子系统 水平子系统 设备间子系统 垂直间子系统 管理间子系统 建筑群子系统 2 工作区子系统又称为什么 服务区子系统 3 水平子系统连接哪两个子系统 工作间子系统 管理间子系统 4
  • 通讯录进阶——动态通讯录

    通讯录进阶 动态通讯录 大体思路 改编通讯录的结构体 初始化通讯录的修改 增加函数的修改 退出通讯录函数的实现 代码一览图 Contact c main c Contact h 大体思路 今天我们将来实现一下基于我之前博客里的通讯录的进阶
  • Linux 练习十三 (Linux网络编程epoll + 源码练习)

    文章目录 4 EPOLL多路复用 4 1 epoll介绍 4 2 epoll接口的使用 4 3 示例 使用epoll实现即时聊天 4 4 epoll和select的优缺点 使用环境 Ubuntu18 04 使用工具 VMWare works
  • QT的学习2(2020.06.06)

    QT模块 QT基础 模块主要分为 1 QT COre 提供核心的非 GUI 功能 所有模块都需要这个模块 这个模块的类包括了动画框架 定时器 各个容器类 时间日期类 事件 IO JSON 插件机制 智能指针 图形 矩形 路径等 线程 XML
  • 4-数据结构-线性表-顺序表的查找和修改以及总结

    问题 顺序表的查找以及修改 跟数组一样 直接进行遍历查找 以及直接找到数组中某个值 思路 查找 目的时找到对应值的数组下标 输入所需数组 所需查找的值 对顺序表中数组进行遍历 若找到 则返回下标即可 输入你想删除的值 然后实现删除操作 流程