【数据结构与算法之顺序表相关操作】

数据结构——顺序表删除练习 代码功能: 1. 删除顺序表中第一个值为x的元素 2. 删除顺序表中所有值为x的元素 3. 删除顺序表中下标为p的连续k个元素函数说明: 函数声明:PSeqList createNullList_seq(int m) 函数功能:建立一个顺序表 函数参数:m为申请结点的个数 函数返回值:返回生成的线性表 函数声明:int locate_seq(PSeqList palist, int 阅读详情

运行结果如图:

运行程序源码:

//
// Created by Dalin Liang on 2019/11/18.
//
#include <stdio.h>
#include <stdlib.h>

typedef int DataType;       /*将int型数据重新定义*/
struct SeqList {            /*自定义结构体*/
    int max;
    int n;
    DataType *element;
};
typedef struct SeqList SeqList;     /*重新定义数据类型*/
typedef SeqList *PSeqList;

PSeqList creatNullList_seq(int max) {     /*创建空顺序表F*/
    PSeqList pSeqList = (PSeqList) malloc(sizeof(SeqList));
    if (pSeqList != NULL) {
        pSeqList->element = (DataType *) malloc(sizeof(DataType) * max);
        if (pSeqList->element) {
            pSeqList->max = max;
            pSeqList->n = 0;
            return pSeqList;
        } else free(pSeqList);
    }
    printf("Out of space!/n");
    return NULL;
}

int isNullList_seq(PSeqList pSeqList) {     /*判断线性表是否为空F*/
    if (pSeqList->n == 0)
        return 1;
    else
        return 0;
}

int insert_seq(PSeqList pSeqList, DataType dataType) {
    pSeqList->element[pSeqList->n] = dataType;
    pSeqList->n = pSeqList->n + 1;
    return 1;
}

int locateV_seq(PSeqList pSeqList, DataType dataType) {      /*按值查找下标F*/
    for (int q = 0; q < pSeqList->n; q++) {
        if (pSeqList->element[q] == dataType)
            return q;
    }
    return -1;
}

int insertPre_seq(PSeqList pSeqList, int p, DataType dataType) {        /*将数据插入到下标为p元素之前F*/
    int q;
    if (pSeqList->n >= pSeqList->max) {
        printf("Overflow!/n");
        return 0;
    }
    if (p < 0 || p > pSeqList->n) {
        printf("Not exist!/n");
        return 0;
    }
    for (q = pSeqList->n - 1; q >= p; q--) {
        pSeqList->element[q + 1] = pSeqList->element[q];
    }
    pSeqList->element[p] = dataType;
    pSeqList->n = pSeqList->n + 1;
    return 1;
}

int insertPost_seq(PSeqList pSeqList, int p, DataType dataType) {       /*将数据插入到下标为p元素之后F*/
    int q;
    if (pSeqList->n >= pSeqList->max) {
        printf("Overflow!/n");
        return 0;
    }
    if (p < 0 || p > pSeqList->n) {
        printf("Not exist!/n");
        return 0;
    }
    for (q = pSeqList->n - 1; q > p; q--) {
        pSeqList->element[q + 1] = pSeqList->element[q];
    }
    pSeqList->element[q + 1] = dataType;
    pSeqList->n = pSeqList->n + 1;
    return 1;
}

int deleteP_seq(PSeqList pSeqList, int p) {     /*删除指定下标元素F*/
    int q;
    if (p < 0 || p > pSeqList->n - 1) {
        printf("Not exist!\n");
        return 0;
    }
    for (q = p; q < pSeqList->n - 1; q++) {
        pSeqList->element[q] = pSeqList->element[q + 1];
    }
    pSeqList->n = pSeqList->n - 1;
    return 1;
}

int deleteV_seq(PSeqList pSeqList, DataType dataType) {     /*删除指定值元素F*/
    int temp = locateV_seq(pSeqList, dataType);
    if (deleteP_seq(pSeqList, temp)) {
        return 1;
    } else {
        return 0;
    }
}

int extend_seq(PSeqList pSeqList) {     /*扩展顺序表max*2F*/
    DataType *pos1 = (DataType *) malloc(sizeof(DataType) * pSeqList->max * 2);
    if (pos1 == NULL) {
        printf("Overflow!/n");
        return 0;
    }
    for (int q = 0; q < pSeqList->max; q++) {
        pos1[q] = pSeqList->element[q];
    }
    free(pSeqList->element);
    pSeqList->element = pos1;
    pSeqList->max *= 2;
    return 1;
}

void output_seq(PSeqList pSeqList) {        /*将数组输出函数*/
    printf("当前的存储元素为:");
    for (int i = 0; i < pSeqList->n; i++) {
        printf("%d  ", pSeqList->element[i]);
    }
    printf("\n");
}

int main() {
    int max, locate_P, locate;
    PSeqList pSeqList;
    DataType locate_V, dataType, dataTypeLocate;
    printf("请输入你需要建立顺序表的大小(数据单位):");
    scanf("%d", &max);
    pSeqList = creatNullList_seq(max);
    if (isNullList_seq(pSeqList)) {
        printf("创建成功!此时顺序表为空,请输入元素,以-1结束:");
    }
    for (int q = 0; q <= pSeqList->max; q++) {
        scanf("%d", &dataType);
        if (dataType != -1) {
            insert_seq(pSeqList, dataType);
        } else
            break;
    }
    output_seq(pSeqList);
    printf("请输入你需要查找元素的下标:");
    scanf("%d", &locate_P);
    printf("元素的值为:%d\n", pSeqList->element[locate_P]);
    printf("请输入你需要查找下标元素的值:");
    scanf("%d", &locate_V);
    printf("元素的下标为:%d\n", locateV_seq(pSeqList, locate_V));
    printf("请输入你需要在插入在该元素前元素的下标以及需要插入的数值:");
    scanf("%d%d", &locate, &dataType);
    insertPre_seq(pSeqList, locate, dataType);
    output_seq(pSeqList);
    printf("请输入你需要在插入在该元素后元素的下标以及需要插入的数值:");
    scanf("%d%d", &locate, &dataType);
    insertPost_seq(pSeqList, locate, dataType);
    output_seq(pSeqList);
    printf("请输入你需要删除元素的下标:");
    scanf("%d", &locate);
    deleteP_seq(pSeqList, locate);
    output_seq(pSeqList);
    printf("请输入你需要删除元素的值:");
    scanf("%d", &dataTypeLocate);
    deleteV_seq(pSeqList, dataType);
    output_seq(pSeqList);
    printf("扩展前max=%d\n", pSeqList->max);
    extend_seq(pSeqList);
    printf("扩展后max=%d\n", pSeqList->max);
    return 0;
}

 

【数据结构】实验项目:顺序表,也就那么回事 目录 序 嗨,这里是狐狸~~ 简介 顺序表的结构定义: 声明顺序表类型变量: 实验内容: 实验说明 : 实验思路 1、输入一组整型元素序列(不少于10个),建立顺序表。 2. 在该顺序表中进行顺序查找某一元素,查找成功返回 1,否则返回 0。 3.判断该顺序表中元素是否对称,对称返回 1,否则返回 0。 symmetry.h 4. 实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 5. 输入整型元素序列(不少于10个),利用有序表插入算法... 阅读详情

相关推荐

从零开始搭建一个高性能电流镜:手把手教你设计Wide-Swing Cascode结构

本文详细解析了Wide-Swing Cascode电流镜的设计原理与实战流程。针对低压高性能模拟电路设计的核心挑战,文章手把手指导如何从理论分析、参数计算到仿真验证,搭建一个兼具高输出阻抗和低输出电压裕度的电流镜结构,并深入探讨了偏置电路生成、性能优化及版图匹配等关键要点。

weixin_29294975的博客 626

数据结构与算法-顺序表基本操作

/* 顺序表基础练习,包含初始化顺序表、建立顺序表、插入元素、查找元素、删除元素、输出顺序表中元素方法。 要求使用插入元素方法建立顺序表,通过查询方法找到输入的元素值,并删除第一个等于输入值的元素,最后输出表中元素。 【输入形式】 第一行输入顺序表长度N, 第二行输入N个元素 第三行输入待查找删除的元素。 【输出形式】 输出删除元素后的顺序表。 【样例输入1】 5 10 12 14 18 12 12 【样例输出1】 10 14 18 12 【样例输入2】 3 10 18 12 13 【样例输出2】 10 1

weixin_45603128的博客 519

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

Ant中的Datatype

1. Datatype一般存储一些信息的集合,比如待编译的文件列表、待删除的目录集等,扮演了任务参数的角色,它们可以在一个任务内部声明,也可以在任务外部定义,并为它起个名字,然后再把这个名字传递给任务,这样就可以跨多个任务共享一个Datatype。 文件集(fileset)合路径(path),是比较常用的两种Datatype 文件集可以列出哪些文件需要编译、打包、复制、删除等。 ...

longcxm1的博客 296

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

m0_58523831的博客 1万+

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 682

顺序表的实现

顺序表的实现 #include #include #include "seqlist.h" int main() {     Pseqlist seq1;     seq1 = create_Null_Seqlist(20);     if(is_Null_seqlist(seq1))         printf("Empty\n");     //1f(-1 == lo

wangxiaohua_147的博客 330

Google Cameraserver 看门狗CameraServiceWatchdog超时crash原理分析

本文分析了Android CameraServiceWatchdog机制的工作原理。该看门狗用于监控相机服务关键操作(如close、flush)的超时情况,通过定时器线程检测阻塞问题。文章详细讲解了Watchdog的初始化流程、使能方式、内部定时器机制(默认周期100ms,650次循环触发超时),并提供了configureStreams阶段的客制化实现方案。当检测到超时,Watchdog会触发abort生成tombstone日志,便于调试分析。

1131

数据结构:顺序表的基本操作

线性表的顺序存储 顺序表的线性存储示意图 C语言定义线性表的顺序存储结构 线性表的顺序存储        线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表在逻辑结构上相邻的元素存储在连续的物理存储单元中,即:通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系。采用顺序存储结构存储的线性表通常简称为顺序表。        顺序存

Keep Fighting All The Time 10万+

Windows上MSYS2的安装和使用

MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在Windows上就没那么好用,比如ffmpeg,opencv等直接引用就行了,这个工具真的很省事。接下来带你们看看它的妙用。1、好好研究确实妙用无穷。

jiexijihe945的博客 4143

PLC的自抗扰控制(ADRC)算法

1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。 1、跟踪微分器 2、线性控制率 3、博图SCL控制代码 4、ADRC控制算法的所有公式汇总 ......

RXXW_Dor的博客 3854

数据结构 顺序表的相关算法操作

例题一:比较两个顺序表的大小 比较是通过由两个表的首数据一次向后遍历,逐个比较。如遇到A.elem[i] > B.elem[i],则A>B.如遇到A.elem[i] <B.elem[i]则B<A,若A.elem[i] =B.elem[i]则下一个数据继续比较。 #include<stdio.h> #include<string.h> const int LIST_INIT_SIZE = 100; const int LISTINCREMENT = 1..

Santer的博客 405

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

2020考研数据结构之顺序表 相关操作算法实现

问题:线性表(a1,a2,a3....an)中元素递增有序且岸顺序存储于计算机内,要求设计一算法完成在最少时间在表中查找数值为x的元素,若找到将其与后继位置相交换,若找不到将其插入表中并使表中元素仍递增有序。 #include<stdio.h> #include<malloc.h> #define maxSize 10 //typedef int ElemType ...

lovegramer的博客 278

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构与算法--用c语言建立顺序表以及其相关操作

顺序表和单链表是数据结构最基础的

m0_70659080的博客 1760

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

线性表的相关算法操作(顺序表)、数据结构

数据结构之线性表操作

weixin_53415378的博客 256

数据结构与算法(C语言)代码实现-线性表的相关操作代码实现(顺序表)

c语言数据结构与算法的代码实现,实现了线性表(顺序表)的相关操作,例如增删改查等操作

没有简介就是简介 788

DS初阶:顺序表的实现

本文为博主在DS学习阶段的第一篇博客,所以会介绍一下数据结构,并在最后学习对顺序表的实现,在友友们深入理解指针(3)学习之前,一定要对三个部分的知识——指针、结构体、动态内存管理的内容有一定的了解,如果友友们对这三块知识不熟悉的话,可以去看看博主的文章哦!

weixin_51142926的博客 1万+

【数据结构 顺序表】超详细理解&&例题&&错题

线性表是一种在实际中广泛使用的的数据结构常见的线性表:顺序表、链表、栈、队列、字符串线性表在逻辑上是线性结构。

Sunfor_sun的博客 1485

《数据结构与算法基础 by王卓老师》学习笔记——2.5顺序表小结

顺序表相关内容小结

m0_55841508的博客 339

数据结构线性表之顺序表

本文章讲的数据结构线性表中的顺序表,后面会更新链表,栈,队列、树、图等数据结构知识。请友友根据自己需要阅读文章。在本文中博主使用的C语言描述算法,后续博主会更新==python来描述算法 ==哦,欢迎友友一起交流学习。

2501_91965125的博客 893

数据结构初识及顺序表详解

我们在写程序的时候,会出现许多的数据,如果我们想要修改某一个值或者删除和添加一个数据的时候就会非常困难,尤其是数据量庞大的时候,这时候数据结构就出来了。

chuxinweihui的博客 1254

面试中顺序表常考的十大题目解析

在数据结构与算法的面试中,顺序表是一个常见的考点。它作为一种基础的数据结构,涵盖了多种操作和概念,本文将详细介绍面试中关于顺序表常考的十大题目。

A Charmer 的博客 1864

数据结构-概念及顺序表

【代码】数据结构-概念及顺序表。

weixin_63164319的博客 438

速通数据结构第二站 顺序表

万字长文深究顺序表!

qq_73329472的博客 2057

C语言数据结构顺序表的相关操作

//顺序表的建立 #include<stdio.h> #include<stdlib.h> typedef int element; #define MAXSIZE 1024 typedef struct { element data[MAXSIZE]; int last; }Sequ_List; Sequ_List*Creat_sequlist();//顺序表的建立 ...

Algorithm_Soul 496
上一篇: 【JavaGUI怎么设计计算器界面】
下一篇: 【为什么电脑插上HDMI线之后,电脑没有了声音解决方案】
pointer_5
博客等级 码龄7年 18粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值