C语言数据结构-03顺序表

重生之我 学习【数据结构之顺序表(SeqList)】 全新的开始,为大家带来数据结构的内容(C语言实现)将以顺序表、链表、栈区、队列、二叉树、常见排序算法为主要内容展开学习 阅读详情

分治法
link

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE    100

struct  SList
{
	int Data[MAXSIZE]; //
    int counter;       //记住最后一个元素的位置,相当于一个计数员吧
} ;                   //定义的结构体
typedef struct SList * List; //给struct SList *取别名,为List

 List MakeEmpty()    // 初始化顺序表
 {
    List list=malloc(sizeof(struct  SList));
    list->counter = -1; //因为第一个元素是0,所以空表的最后一个元素就应该为-1
    return list;
 }

void ShowList(List list)  //遍历顺序表
{
	int i=0;
    printf("遍历顺序表--------------\n");
    for( i= 0;i < list->counter;i++)
    {
        printf("%d\t",list->Data[i]);
    }
}
 int Find(int X,List list)  //查找list中的某个元素 X的位置 
{
    int i = 0;
    while(i<=list->counter && list->Data[i]!=X ) //小于最后一个元素位置,并且没有和查找的元素相等,查找下一个 
    {
        i++;
    }
        if(i > list->counter)
        {
            return -1; //I已经大于最后一个元素的位置,说明没找到,返回-1 
        }
        else
        {
            return i ; //找到的位置 
        } 
    
}

void Insert(int i,int X,List list) //在第i个位置插入 
{
    int j;
    if(list->counter==MAXSIZE-1) //表满了 
    {
        printf("表已经满了");
        return; 
    }
    if(i<1||i>list->counter+2) //插入位置不对
    {
        printf("位置错误");
        return;
    }
    for(j=list->counter;j>=i-1;j--) //移动腾出空位 
    {
        list->Data[j+1] = list->Data[j];
    }
    list->Data[i-1] = X; //插入新元素 
    list->counter++; //指向新的最后一个元素位置 

    printf("插入成功!\n");
    return;
} 

void Delete(int i, List list)
{
    int j;
    if(i<1||i>list->counter+1) //检查位置 
    {
        printf("不存在第%d个元素",i);
        return;
    }
    for(j=i;j<=list->counter;j++)
    {
        list->Data[j-1] = list->Data[j]; //向前移动补空位 
    }
    list->counter--; //指向新的最后一个元素位置
    printf("删除成功!\n");
    return;
} 

int main()
{
	int i,j;
    List list;
    list = MakeEmpty();                    //初始化 建立空表                               
    list->counter = 9 ;
    for(i = 0;i<10;i++)
    {
        list->Data[i] = i ;                //赋值为 0,1,2,3,,,,,9
    }
  

    ShowList(list);
    

    printf("在何处i=?插入何数j=?\n");
    scanf("%d%d",&i,&j);
    Insert(i,j,list);
    ShowList(list);
    


    printf("删除第几个数\n");
    scanf("%d",&i);
    Delete(i,list);
    ShowList(list);
    


    printf("查找第几个数\n");
    scanf("%d",&i);
    printf("结果为%d\n",Find(i,list));
    ShowList(list);
    

}
C++逆序创建链式线性表 采用C++编程语言,具有详细的代码注释说明,实现逆序创建链式线性表:输入、输出、插入、删除等操作。 立即下载

相关推荐

[EDA系列]二、Altium Designer异形封装实战:从CAD导入到PCB布局

本文详细介绍了在Altium Designer中实现异形封装的实战流程。通过五步核心操作,将CAD软件中的复杂二维轮廓精准导入并转换为可直接用于PCB布局的智能封装,解决了不规则形状铺铜的难题,特别适用于射频天线、传感器外壳等对机械尺寸有严苛要求的设计场景。

weixin_29194817的博客 142

C++用类实现线性表(保姆级教你从0到封装一个SeqList类,附源码)

[着急用代码的直接拿] (线性表(非链表)源码网盘链接:https://pan.baidu.com/s/1SbzGBK0Cv3nV3q14yUhDBw 提取码:s51t 链表源码网盘链接:https://pan.baidu.com/s/1dhd7Lvcd3yhC5nzcVzWTyA 提取码:zdzn) 1.什么是线性表 何谓线性表呢?先看一手百度的解释: 扯白了线性表就是一种序列并且其长度是作为它本...

m0_51510934的博客 4381

ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例)

本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。

3a9bq4r8t2y的博客 253

数据结构:线性表

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。

梁辰兴的博客 2661

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 868

YOLOv8的特征蒸馏代码应用讲解(CWD/MGD/mimic/在线蒸馏/逻辑蒸馏)

基于YOLOv8的逻辑蒸馏、特征蒸馏、在线蒸馏等方法代码介绍。

qq_41920323的博客 2582

线性表(C++数据结构)

文章目录数据描述 数据描述 数据可以用不同的形式进行描述或存储在计算机存储器中,最常见的数据描述方法有:公式化描述、链接描述、间接寻址和模拟指针。 数据结构的概念: 抽象数据类型。 公式化描述、链接描述、间接寻址和模拟指针。 单向链表、循环链表和双向链表。 ...

weixin_48434899的博客 3078

【网络安全 | 渗透工具】密码字典生成工具crunch、cupp安装使用教程

Crunch是一个常用的密码破解工具,它可以根据指定的字符集、长度和模式生成各种可能的密码并进行暴力破解。同时,Crunch可以将生成的密码保存到文件中,以便在破解工具中使用。在进行渗透测试时,手动收集密码字典是十分耗时的,利用密码字典生成工具可以大幅缩短时间,提高爆破宽度。

等风来 8421

C++实现数据结构——线性表

本次实验主要采用顺序表中的线性表的知识来进行实验,运用了线性表相关操作的声明和实现,如增删改查等。

qq_63058205的博客 2053

制作3D地形图的方法-使用GlobalMapper和3ds Max软件

打开GlobalMapper软件,在菜单栏中选择“文件”>“打开数据文件”,然后选择相应的高程数据文件。在菜单栏中选择“渲染”>“渲染设置”,根据需要进行设置,如分辨率和输出格式。选择地形对象,点击菜单栏中的“渲染”>“材质编辑器”,然后根据需要调整材质属性,如颜色、纹理和光照等。在菜单栏中选择“工具”>“高程栅格和网格”>“创建地形网格”。在菜单栏中选择“文件”>“导出”>“导出栅格格式”。打开3ds Max软件,在菜单栏中选择“文件”>“导入”,然后选择之前导出的地形数据文件。步骤3:导出地形网格。

JqlScala的博客 1535

10分钟搞定manim安装与vscode配置

manim安装与vscode配置

帅帅de三叔 3411

C语言版本数据结构03:顺序表+链表

今天我们来学习数据结构的第一个顺序结构:顺序表和链表。

weixin_55805679的博客 802

ICC2 user guide(二)Placement and Optimization

ICC2 place阶段user guide

m0_61544122的博客 9223

数据结构C语言代码实战03-顺序表和链表

Lesson3--顺序表和链表 【本节目标】 1.线性表 2.顺序表 3.链表 4.顺序表和链表的区别和联系 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 2.顺序表 2.1概念及结构 顺序表是用一段物理地址连续的存储.

aiqq136的博客 926

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

03_C语言数据结构与算法之线性数据结构:数组与顺序表 —— 连续内存的高效操作艺术

/ 顺序表结构定义int *data;// 指向底层连续内存的数组指针int size;// 当前存储的元素个数(有效长度)// 底层数组的最大容量} SeqList;数组与顺序表的核心价值,在于对连续内存的极致利用。数组凭借连续存储实现了O(1)的随机访问和高缓存命中率,是高性能场景的首选;顺序表则通过封装与扩容优化,解决了数组固定长度的痛点,让连续内存的操作更灵活。基础结构提供底层性能支撑,封装优化则提升工程化可用性。

C语言无原生OOP特性,却能借结构体+函数指针实现封装、继承、多态,落地工厂等设计模式。博客中以标准C语法实操教学,融入跨平台兼容设计,助开发者掌握C语言OOP核心与工程实践技巧。 1222

STM32F407中文手册

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

数据结构C语言—线性表【顺序存储】顺序表(malloc动态分配实现)【2021-06-03】

数据结构C语言—线性表【顺序存储】使用malloc动态分配实现SqList.hSqList.cmain.c运行结果示例 SqList.h #define ListSize 100 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE 1 #define OVERFLOW 1 typedef int Status; typedef int DataType; typedef int *Pt; typed

TDTX博客 789

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据结构C语言代码实战03-顺序表和链表--原地移除数组中所有的元素val

1. 原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)。 OJ链接https://leetcode-cn.com/problems/remove-element/ 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的答案是

aiqq136的博客 546

嵌入式Linux学习 | 数据结构 (Day03)顺序表与单链表 超详细解析(含 C 语言实现 + 作业 + 避坑指南)

本文系统讲解了顺序表和单链表的原理与实现。顺序表基于数组实现,支持随机访问但插入删除效率低;单链表通过指针连接结点,插入删除高效但查找需要遍历。文章详细分析了二者的优缺点,提供了完整的C语言实现代码,包含初始化、增删改查等核心操作,并特别强调了内存管理和指针操作中的常见问题。最后通过链表逆序和双链表实现两个编程作业,帮助读者深入理解链式结构。顺序表和链表各有适用场景,理解其底层差异是掌握数据结构的关键。

2301_76932294的博客 424

数据结构·顺序表

学习数据结构与算法之前,一般是先学数据结构,方便之后学习算法,那么数据结构拆开介绍,就是数据 和 结构,数据,生活中到处都是,结构,就是数据存储的方式,即。

更新各种计算机技能~ 1988

【探索数据结构与算法(C语言)】——顺序表

顺序表的基本操作(超详细)、功能、代码实现​​ ​

2302_80220709的博客 703

顺序表详解

本文介绍了顺序表的定义,以及顺序表常见的使用与注意事项

m0_72529141的博客 961

C语言(14)——初识顺序表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2301_80065652的博客 395

【数据结构】PTA 顺序表操作集 C语言

其中List/* 保存线性表中最后一个元素的位置 */:创建并返回一个空的线性表;:返回线性表中X的位置。若找不到则返回ERROR;:将X插入在位置P并返回true。若空间已满,则打印“FULL”并返回false;如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false;:将位置P的元素删除并返回true。若参数P指向非法位置,则打印“POSITION P EMPTY”(其中P是参数值)并返回false。

2302_79596028的博客 857

C语言:手撕顺序表及基于顺序表写一个通讯录

在头插前,先判断空间够不够,够的情况下,我们先进行数据挪动,让i=sl->_size,刚开始把倒数第二个数据挪动到sl->_size位置处,不断减减i,最后将下标为0的位置即头部插入数据,并将_size++;头文件SequenceList.h用来定义一个顺序表结构体、声明顺序表的接口,源文件SequenceList.c负责实现顺序表的接口,test.c文件用于测试。传一个数据x过来,如果顺序表有这个数据,那么将它的下标返回,如果循环结束还是没有找到,那么就返回-1。因为不需要修改内容,所以我们传值即可。

枫叶栀子的博客 887

动态顺序表(动态扩容)

10//默认最大长度//顺序表的最大容量int length;//顺序表的当前长度int* data;//指向动态分配数组的指针}SeqList;由于malloc函数返回的是所申请空间的地址,因此我们需要用指针来接受,还是那句话,为了方便起见,我们用 int* 来接收。

有梦想的电信狗 2095

顺序表(C语言实现)

【代码】顺序表(C语言实现)

YoungerBUPT的博客 161
上一篇: RT1064-gpio
下一篇: RT1064-ADC
一只菜鸡儿
博客等级 码龄7年 37粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值