c语言顺序表

用C语言实现一个顺序表(上) 用C语言实现一个顺序表 阅读详情

目录

顺序表的定义

顺序表的初始化

 顺序表的扩容

  顺序表的销毁

顺序表的尾插

 顺序表的头插

顺序表的头删

  顺序表的尾删

 顺序表的打印

 顺序表的插入

 顺序表的删除 

 顺序表的查找     

 顺序表的修改

---------------------------------------------------------------------------------------------------------------------------------

顺序表的定义

顺序表是n个具有相同特性的数组元素的有序数列,顺序表在逻辑上是线性结构,也就是一条连续的直线,但在计算机内存中不一定是连续的

​typedef int SLDataType;//方便以后使用顺序表存储不同类型数据的值
 
typedef struct llist
{
    SLDataType* a; //指向动态开辟的数组
    int size;      //有效的数据个数
    int capacity;  //当前顺序表容量大小
}SL;

​

使用typedef来定义int后 如果以后要存储不同数据类型的值的话就只需要改变typedef 后的 int

---------------------------------------------------------------------------------------------------------------------------------

顺序表的初始化

void SLInit(SL* ps)
{
	assert(ps != NULL);
	ps->a = NULL;
	ps->size = ps->capacity = 0;
}

 顺序表的扩容

void SLcheakcapacity(SL* ps)
{
	if (ps->size == ps->capacity)//当有效数字等于容量的时候 就要扩容了
	{
		int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;①
		SLDataType* tmp = (SLDataType*)realloc(ps->a, sizeof(SLDataType) * newcapacity);
		if (tmp == NULL)//一般情况下是不会扩容失败的
		{
			cout << "扩容失败";
			exit(-1);
		}
		ps->a = tmp;
		ps->capacity = newcapacity;
	}
	return;
}

  顺序表的销毁

void Destory(SL* ps)
{
	if (ps->a)
	{
		free(ps->a);
		ps->a = NULL;
		ps->capacity = ps->size = 0;
	}
}

 因为存在free空指针的问题 这里要用if判断一下顺序表是否为空 

顺序表的尾插

void SLPushBack(SL* ps, SLDataType x)
{
	SLcheakcapacity(ps);
	ps->a[ps->size] = x;
	ps->size++;
}

 顺序表的头插

void SLPushfront(SL* ps, SLDataType x)
{
	SLcheakcapacity(ps);
	for (int i = ps->size; i >= 1; i--)
	{
		ps->a[i] = ps->a[i - 1];
	}
	ps->a[0] = x;
	ps->size++;
}

顺序表的头删

void SLPopfront(SL* ps)
{
	assert(ps->size > 0);
	for (int i = 1; i < ps->size; i++)
	{
		ps->a[i - 1] = ps->a[i];
	}
	ps->size--;
	return;
}

  顺序表的尾删

void SLPopback(SL* ps)
{
	assert(ps->size > 0);
	if (ps->size == 0)//判断顺序表是否为空
	{
		printf("顺序表为空\n");
		return;
	}
	ps->size--;
}

 顺序表的打印

void SLprint(SL* ps)
{
	int i = 0;
	for (i = 0; i < ps->size; i++)
	{
		printf("%d ", ps->a[i]);
	}
	return;
}

 顺序表的插入

void SLinset(SL* ps, int pos, SLDataType x)
{
	assert(ps);
	assert(pos >= 0 && pos <= ps->size);
	SLcheakcapacity(ps);
	int i = ps->size;
	while (i > pos)
	{
		ps->a[i] = ps->a[i - 1];
		i--;
	}
	ps->a[pos] = x;
	ps->size++;
	return;
}

 顺序表的删除 

void SLerase(SL* ps, int pos)
{
	assert(ps);
	assert(pos >= 0 && pos < ps->size);
	int i = pos;
	while (i < ps->size - 1)
	{
		ps->a[i] = ps->a[i + 1];
	}
	ps->size--;
	return;
}

 顺序表的查找     

int SLFind(SL* ps, SLDataType x)
{
	assert(ps);
	int i = 0;
	for (i = 0; i < ps->size; i++)
	{
		if (ps->a[i] == x)
			return i;
	}
	return -1;//没找到就 返回-1
}

 顺序表的修改

void SLChange(SL* ps, int pos, SLDataType x)
{
	assert(ps);
	assert(pos >= 0 && pos < ps->size);
	ps->a[pos] = x;
	return;
}

数据结构 用C语言来创建一个顺序表 顺序表的创建需要用到结构体,构造一个结构体来存储数据,顺序表申请的内存是连续的。创建顺序表的思路按照数据的“增删改查来进行编写”下列是顺序表的创建代码 创建头文件: sqlist.h #ifndef SQLIST_H #define SQLIST_H #define N 100 #define ming 1119 #define shu 1120 typedef int T; typedef st... 阅读详情

相关推荐

C语言顺序表操作

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define MAX_SIZE 10 void create(struct link &amp;L); void show(struct link L); void getelem(struct link L,int n); void insert(struct link &amp;L,in...

qq_41481924的博客 2024

linux c/c++ 内存表学习

http://www.cnblogs.com/wusee/archive/2012/05/27/2519902.html

世上无难事只要肯放弃 641

lumerical-环形谐振器

利用mode求解器优化得到所需的环的总长度,即环形器的半径,然后通过varFDTD得到光场分布和透过率.

m0_61776728的博客 2189

C语言简易顺序表(动态内存)

简易版 顺序表(一看就会)

Obto_的博客 384

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 361

CTF实战:从ECDSA签名漏洞到flag获取

本文详细解析了ECDSA签名算法在CTF比赛中的实战应用,重点探讨了随机数重用和参数泄露等常见漏洞。通过PWNHUB六月赛的例题,展示了如何从签名数据中恢复私钥并获取flag,同时提供了防御措施和实战技巧,帮助参赛者提升解题能力。

weixin_42706667的博客 277

C++常见类型及占用内存表

GPS生产厂家在定义数据的时候都会有一定的数据类型,例如double、int、float等,我们知道它们在内存中都对应了一定的字节大小,而我在实际使用时涉及到了端序的问题(大端序高字节在前,小端序低字节在前),我用的GPS为小端序,那我抓包的时候就按照小端序抓并且定义一个指定字节大小的小端序类型,对应上原本的double、int、float等类型即可,并且不能使用字节对齐

weixin_42325783的博客 406

FTP新手必看:vsftpd 530登录错误的8种实战解决方案(附详细配置步骤)

本文针对FTP服务配置中常见的vsftpd 530登录错误,提供了8种实战解决方案。从理解错误本质入手,系统性地排查用户列表策略、PAM认证、系统黑名单、Shell限制、目录权限及DNS解析等问题,并附有详细的配置步骤与命令,帮助新手快速定位并解决登录失败难题。

ik678901的博客 696

用c语言动态储存方式创建一个线性表

为了使用动态存储的方式创建线性表,你可以使用指针来动态分配内存。下面是一个简单的例子: #include <stdio.h> #include <stdlib.h> #define INIT_CAPACITY 2 typedef struct { int *elements; int size; int capacity; } LinearList; vo...

weixin_42587866的博客 148

谷歌DreamFusion使用方法及实例详解

DreamFusion 是谷歌提出的基于文本生成3D模型的突破性技术,无需3D训练数据,通过2D扩散模型(如Imagen)与NeRF(神经辐射场)结合实现。以下为使用社区开源实现(如。)的详细步骤及实例。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 1042

如何设计QR反激变换器

摘要:本文分析了基于GaN技术的PD适配器市场现状,重点探讨了准谐振反激变换器(QR Flyback)的工作原理及设计方法。文章首先介绍了反激变换器的三种工作模式(CCM、DCM、CRM/QR)及其特点,指出QR模式通过谷底开通技术能显著降低开关损耗。随后以65W适配器为例,详细阐述了变压器参数设计流程,包括匝比确定、原边电感计算和绕组匝数设计等关键步骤。文章强调QR反激变换器凭借高效率、小体积和低成本优势,已成为20W-65W PD适配器的主流拓扑方案,配合GaN技术进一步提升了功率密度和便携性。

m0_62868254的博客 1496

动态顺序表(C语言)

轻松带你搞定顺序表!

学代码的咸鱼的博客 3257

DeerFlow 系列教程 第二十篇 | 前端定制与二次开发指南

支持的语言定义在locale.tsLocale 检测采用三级降级策略Cookie 优先:检查localeCookie浏览器语言默认值en-US.value;if (locale!DeerFlow 使用管理主题切换,在根布局中通过主题相关的 CSS 变量定义在中(约 10KB)。: boolean;// 是否支持深度思考。

weixin_43674738的博客 223

C语言实现顺序表

c语言实现顺序表 线性表是最简单的数据结构,而顺序表又是最简单的线性表,其基本思想是用一段地址连续的储存单元依次存储线性表的数据元素,比如我们常用的一位数组,下面代码实现了顺序表的定义以及基本操作。 编译环境:vs2017。 运行试例: 贴代码如下: #include "stdio.h" #include "windows.h" #include "stdlib.h" #define MAXSI...

qq_42204238的博客 4万+

基于Simulink的电机驱动逆变器仿真

本文完成了电机驱动逆变器的Simulink多层级仿真平台搭建,实现了:✅ 构建了从理想到器件级的逆变器模型体系✅ 实现了Si/SiC损耗精确计算与结温预测✅ 建模了母线寄生参数、死区效应、栅极驱动等关键非理想特性✅ 支持故障注入与保护策略验证✅ 集成了热管理、EMI、寿命预测与碳足迹评估。

amy_mhd的博客 87

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【C语言】顺序表的创建

顺序表的代码实现

lixxkv的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

使用C语言创建顺序表

C语言顺序表 C语言顺序表 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define MAXSIZE 5 typedef char ElemType ; //声明顺序表的结构体类型 typedef struct{ ElemType *elem; int length; ...

qq_44871378的博客 8217

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言-顺序表

欢迎来到HanLop博客的C语言数据结构初阶系列。在这个系列中,我们将深入探讨各种基本的数据结构和算法,帮助您打下坚实的编程基础。本次我将为你讲解。顺序表(也称为数组)是一种线性表,因其简单易用而广泛应用于各类编程任务中。在本篇文章中,我们将介绍顺序表的基本概念、顺序表的创建和操作方法,以及其优缺点。通过一些实际的代码示例,您将更好地掌握顺序表在C语言中的应用,从而为后续学习其他数据结构打下坚实的基础。

m0_73605503的博客 1775

顺序表的C语言实现

C语言实现顺序表

Broken_x的博客 1442

顺序表【C语言实现】

线性表是由n(n>=0)个具有相同特性的数据元素的有限序列。作为一种在计算机科学中广泛应用的基础数据结构,常见的线性表有:顺序表、链表、栈、队列、字符串等逻辑结构:呈线性结构,及数据元素之间存在“一对一”的逻辑顺序,如同一条直线。物理结构:数据元素在计算机内中的实际存储位置(物理位置)不一定是连续的。存储实现:数组(顺序存储结构):数据元素存储在一片连续的地址空间中。链式结构(链式存储结构):数据元素分散存储,通过指针链接表示其逻辑顺序。

2301_80426325的博客 1048

c语言实现顺序表(详细代码)

#include<stdio.h> #include<malloc.h> #define ElemType int //数据类型可以根据需要自行选择 #define MaxSize 100 //顺序表的最大长度 typedef struct{ ElemType *data; //存储空间基址 int length; }SqList; //初始化顺序表,创建一个空表 void InitList(SqList *L) { L->data = (ElemType *

better_xiong的博客 1万+

c语言将两个递增的顺序表合并为一个递减的顺序表

eg:顺序表A:1 3 5 7 顺序表B:2 4 6 8 合并后的表C:8 7 6 5 4 3 2 1 **思路:**从后往前遍历顺序表A和B,如果当前A表的数大于等于B表的数,则将A表的数存入C,A的元素下标往前移一位,否则,将B表的数存入C表,B的元素下标往前移一位B;最后再把其中一个未遍历完的表存入C表。 #include <stdio.h> #include <mallo...

dream_it_的博客 5514

【C语言】从零开始:用C语言实现顺序表

欢迎来CILMY23的博客本篇主题为 从零开始:用C语言实现顺序表

cilmy23的note 1580

C语言顺序表

C语言顺序表概念及结构静态顺序表动态顺序表接口实现(动态)顺序表的优缺点优点缺点 概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。 在数组上完成数据的增删查改。 顺序表一般可以分为: 静态顺序表:使用定长数组存储元素。 动态顺序表:使用动态开辟的数组存储。 静态顺序表 代码实现 #define N 10 //这表示顺序表最多存储的数据 typedef int Datatype; typedef struct SeqList { D

qq_29468639的博客 1954

用C语言实现顺序表

介绍了如何用C语言实现一个动态顺序表,并且完成对顺序表的增删查改等查找及测试。同时介绍了线性表和顺序表的优缺点。

0xFFFFFFFF 1207

c语言 顺序表 代码,C语言顺序表的实现代码

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

weixin_42581003的博客 1657
上一篇: C语言项目实战通讯录
下一篇: C语言链表
pythoncjavac++
博客等级 码龄5年 718粉丝 71原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pythoncjavac++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值