对顺序表的基本操作(增删查改),并编写makefile进行编

1.定义顺序表结构体

2.创建顺序表

3.从尾部插入数据

4.遍历顺序表

5.从尾部删除数据

6.按下标插入数据

7.按下标删除数据

8.按下标修改数据

9.按下标查找数据

10.按数据修改数据

11..按数据查找位置

12.顺序表去重

        删除重复数据

        (提示:将先出现的数据与后面的数据对比,如果有重复的将后面的数据删除)

        提示:可以直接使用按位置删除的函数

        顺序表中原有:1 2 2 1 1 3 4 3 2 4 5 3 4 5 4 1

        ......

        顺序表中存储:1 2 3 4 5

SeqList.c

#include "./SeqList.h"                                      
#include <stdio.h>                                     
#include <stdlib.h>                                    
//创建顺序表                                           
SeqList* create_seqList()                              
{                                                      SeqList *list = (SeqList*)malloc(sizeof(SeqList)); if(NULL == list)                                   {                                                  return NULL;                                   }                                                  list -> pos = 0;//初始化要操作的位置为0            return list;                                       
}                                                      //插入数据                                             
void insert_SeqList(SeqList* list,datatype num)        
{                                                      //判断顺序表是否为满                               if(list->pos >= N)                                 {                                                  printf("%d顺序表为满,插入失败!\n",num);        return;                                        }                                                  list->data[list->pos] = num;                       (list->pos)++;                                     printf("%d插入成功!\n",num);                       return;                                            
}                                                        //遍历顺序表                                             
void show_SeqList(SeqList* list)                         
{                                                        for(int i=0;list->pos>i;i++)                         {                                                    printf("%d ",list->data[i]);                     }                                                    printf("\n");                                        return;                                              
}                                                        //从尾部删除                                             datatype del_SeqList(SeqList *list)                      
{                                                        int num;                                             if(0 == list->pos)                                   {                                                    printf("顺序表为空!\n");                         return 0;                                        }                                                    (list->pos)--;                                       num = list->data[list->pos];                         return num;                                          
}                                                                        //按位插入                                                               
void insert_location_SeqList(SeqList* list,datatype index,datatype num)  {                                                                        if(list->pos >= N)                                                   {                                                                    printf("顺序表为满,插入失败!\n");                                return;                                                          }                                                                    if(index<0 || index>list->pos)                                       {                                                                    printf("index=%d属于非法插入!\n",index);                         return;                                                          }                                                                    int i=0;                                                             for( i=list->pos;i>index;i--)                                        {                                                                    list->data[i] = list->data[i-1];                                 }                                                                    list->data[i] = num;                                                 (list->pos)++;                                                       printf("%d成功插入到下标为%d的位置!\n",num,index);                   return;                                                              }                                                                        
//按位删除                                                               
datatype del_location_SeqList(SeqList* list,datatype index)              
{                                                                        int i;                                                               if(0 == list->pos)                                                   {                                                                    printf("顺序表为空!\n");                                         return 0;                                                        }                                                                    for( i=index;i<(list->pos)-1;i++)                                    {                                                                    list->data[i] = list->data[i+1];                                 }                                                                    (list->pos)--;                                                       printf("下标为%d的数据删除成功!\n",index);                           return index;                                                        
}                                                                        
//按位修改                                                                             
void rm_location_SeqList(SeqList* list,datatype index,datatype num)                    
{                                                                                      if(index<0 || index>list->pos)                                                     {                                                                                  printf("index=%d属于非法修改!\n",index);                                       return;                                                                        }                                                                                  list->data[index] = num;                                                           printf("下标为%d的数据修改成功!\n",index);                                         return;                                                                            }                                                                                      //按位查找                                                                             
void find_location_SeqList(SeqList* list,datatype index)                               
{                                                                                      if(0 == list->pos)                                                                 {                                                                                  printf("顺序表为空!\n");                                                       return;                                                                        }                                                                                  printf("下标为%d是数据是%d\n",index,list->data[index]);                            return;                                                                            }                                                                                      //按数据修改                                                                           
void update_SeqList(SeqList* list,datatype oldNum,datatype newNum)                     
{                                                                                      int i=0;                                                                           for(i=0;i<list->pos;i++)                                                           {                                                                                  if(list->data[i] == oldNum)                                                    {                                                                              list->data[i] == newNum;                                                   }                                                                              }                                                                                  printf("数据修改完成!\n");                                                         return;                                                                            
}                                                                                      //按数据查找                                                                           
int select_SelqList(SeqList* list,datatype num)                                        
{                                                                                      int i=0;                                                                           for(i=0;i<list->pos;i++)                    {                                           if(list->data[i] == num)                {                                       return i;                           }                                       }                                           return -1;                                  
}                                               //顺序表去重                                    
//1221134324534541                              
//12345                                         
void delrepeat_SeqList(SeqList* list)           
{                                               if(0 == list->pos)                          {                                           printf("顺序表为空!\n");                return ;                                }                                           int i,j;                                    for(i=0;i<(list->pos);i++)                  {                                           for(j=i+1;j<(list->pos);j++)            {                                       if(list->data[i] == list->data[j])  {                                   del_location_SeqList(list,j);   j--;                            }                                   }                                       }                                           printf("去重成功!\n");                      return;                                     }                                               
//释放顺序表
void free_SeqList(SeqList* list)
{                                free(list);list = NULL;printf("释放成功!");return;
}

mian.c

#include <stdio.h>
#include "./SeqList.h"
int main(int argc, const char *argv[])
{   SeqList * list = create_seqList();/*insert_SeqList(list,10);insert_SeqList(list,100);insert_SeqList(list,1000);insert_SeqList(list,10000);insert_SeqList(list,100000);show_SeqList(list);                              del_SeqList(list);show_SeqList(list);del_SeqList(list);show_SeqList(list);del_SeqList(list);show_SeqList(list);del_SeqList(list);show_SeqList(list);del_SeqList(list);show_SeqList(list);insert_location_SeqList(list,2,222);show_SeqList(list);del_location_SeqList(list,2);show_SeqList(list);rm_location_SeqList(list,2,222);show_SeqList(list);find_location_SeqList(list,2);update_SeqList(list, 11, 111);show_seqList(list); int index = select_SelqList(list, 2222);printf("index=%d\n", index);*/ insert_SeqList(list,1);insert_SeqList(list,2);insert_SeqList(list,2);insert_SeqList(list,1);insert_SeqList(list,1);insert_SeqList(list,3);insert_SeqList(list,4);insert_SeqList(list,3);      insert_SeqList(list,2);      insert_SeqList(list,4);      insert_SeqList(list,5);      insert_SeqList(list,3);      insert_SeqList(list,4);      insert_SeqList(list,5);      insert_SeqList(list,4);      insert_SeqList(list,1);      delrepeat_SeqList(list);     show_SeqList(list);          free_SeqList(list);                    return 0;                    
}                                

SeqList.h

#ifndef __01_H__                                                         
#define __01_H__                                                         
#define N 17 //顺序表容量                                                
typedef int datatype;                                                    
typedef struct                                                           
{                                                                        datatype data[N];                                                    int pos;                                                             
}SeqList;                                                                SeqList* create_seqList();                                               
void insert_SeqList(SeqList* list,datatype num);                         void show_SeqList(SeqList* list);                                        
datatype del_SeqList(SeqList *list);                                     
void insert_location_SeqList(SeqList* list,datatype index,datatype num); 
datatype del_location_SeqList(SeqList* list,datatype index);             
void rm_location_SeqList(SeqList* list,datatype index,datatype num);     
void find_location_SeqList(SeqList* list,datatype index);                
void update_SeqList(SeqList* list,datatype oldNum,datatype newNum);      int select_SelqList(SeqList* list,datatype num);                         void delrepeat_SeqList(SeqList* list); 
void free_SeqList(SeqList* list);                                  
#endif                                                                   

makefile.cfg

Target:=a.out                   
obj:=SeqList.o main.o           
CAN:=-c -o                      
CC:=gcc

makefile

-include ./makefile.cfg
$(Target):$(obj)$(CC) $^ -o $@
%.o:%.c$(CC) $< $(CAN) $@
.PHONY:cleanclean:rm $(obj) $(Target)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法刷题day15

目录 引言一、保险箱二、棋盘三、翻转总结 引言 今天还是三道新题&#xff0c;多练多想才会有出路。 一、保险箱 标签&#xff1a;状态机DP 思路&#xff1a;这道题看的我懵的很&#xff0c;大概意思就是每一位有三种状态 f [ i ] [ 3 ] f[i][3] f[i][3] 分别为借位、啥也不…

面试redis篇-03缓存击穿

原理 缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮 解决方案一:互斥锁 解决方案二:逻辑过期 提问与回答 面试官 :什么是缓存击穿 ? 怎么解决 ? 回答: 缓存击穿的意思…

【Linux】主机搭建 Linux服务器环境 笔记

目录 前言选择系统软件1. 用U盘装系统2. 安装 Centos7.93. 网络套件 应用软件1. ngnix2. 防火墙配置3. nodejs 后记 前言 过年买了个 mini 主机当玩具玩一下&#xff0c;这里记录下。 选择 已有主力机 (windows) 的情况下&#xff0c;使用过如下四种 Linux宿主环境。这里总…

【C语言必刷题】4. 打印100~200之间的素数

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

python中类属性与实例属性

类属性与实例属性的区别&#xff1a; 类属性&#xff1a; 是与类相关联的属性&#xff0c;在类级别上定义&#xff0c;对于所有该类的实例来说都是相同的。可以通过在类的内部直接定义赋值来创建类属性。 Example: class MyClass:class_attribute "This is a class a…

PaddleSeg分割框架解读[01] 核心设计解析

文章目录 PaddleSeg分割框架解读[01] 核心设计解析tools/train.pypaddleseg/cvlibs/config.pypaddleseg/cvlibs/builder.pypaddleseg/cvlibs/manager.pyPaddleSeg分割框架解读[01] 核心设计解析 tools/train.py import argparse import random import numpy as np import cv2…

Linux调优指南

更多相关知识可以阅读&#xff1a; https://www.yuque.com/treblez/qksu6c/yxl59pkvczqot9us https://www.yuque.com/treblez/qksu6c/nqe8ip59cwegl6rk 本文不会讲解基础知识。 CPU 设置调度器 这几个调度类的优先级如下&#xff1a;Deadline > Realtime > Fair 如果你…

频谱仿真平台HTZ Communications为私有5G建设铺平道路

韩国的国家监管机构韩国通信委员会&#xff08;KCA&#xff09;计划在德思特频谱仿真平台HTZ Communications的支持下加快扩大无线电接入范围&#xff0c;提升全国电信服务的质量和效率。 韩国通信委员会&#xff08;KCA&#xff09;在韩国的监管环境中扮演着至关重要的角色&am…

单例模式双端检测详解

正确写出doublecheck的单例模式_double check单例模式-CSDN博客

《C++ Primer Plus》《5、循环和关系表达式》

文章目录 1 for循环1.1for循环的组成部分1.2回到for循环1.3修改步长1.4使用for循环访问字符串1.5递增运算符和递减运算符1.6副作用和顺序点&#xff08;了解&#xff09;1.7前缀格式和后缀格式1.8递增/递减运算符和指针1.9组合赋值运算符1.10复合语句&#xff08;语句块&#x…

设计模式: 建造者模式

文章目录 一、什么是建造者模式二、建造者模式的结构三、使用场景案例分析1、使用场景2、案例分析 一、什么是建造者模式 建造模式通过一步一步的去构建一个复杂的对象。该模式将对象的构建细节封装在一个独立的建造者类中&#xff0c;使得客户端代码可以根据需要定制对象的构…

cRIO9040中NI9381模块的测试

硬件准备 CompactRIO9040NI9381直流电源&#xff08;可调&#xff09;网线 软件安装 下载地址 LabVIEW Real-Time 模块 NI CompactRIO 设备驱动程序 LabVIEW FPGA 模块&#xff08;可选&#xff09; 仅以下情况需要LabVIEW FPGA模块&#xff1a; 想为CompactRIO终端设计FP…

Gitlab操作流程

阶段1-构建账户信息 1.1 管理员分配账户 方式1-推荐 企业正常使用gitlab时&#xff0c;一般由项目经理(超级管理员)手动创建开发者账户信息&#xff0c;然后将账户发送给开发者&#xff0c;以便登录使用&#xff1b; 流程如下&#xff1a; 点击创建用户按钮&#xff1b; 创…

spring-orm:6 HibernateJpaVendorAdapter源码解析

版本 spring-orm:6.1.3 源码 org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter {// 旧版本Hibernate的方言类是否存在标识private static final boolean oldDialectsPresent Clas…

顶顶通实时质检系统如何添加词库

文章目录 前言联系我们步骤1. 导入系统预置词库2. 手动添加词库 在实时质检时如何质检到词库 前言 本篇文章主要讲解顶顶通实时质检系统如何添加词库。 词库添加的方式&#xff1a; 导入系统预置词库手动添加词库 联系我们 有意向了解实时质检系统的用户&#xff0c;可以点击…

邦芒支招:6个建议帮你找到合适的工作

说起来&#xff0c;今年找工作对很多毕业生确实不利&#xff0c;受大环境影响&#xff0c;很多小微企业难以为继&#xff0c;甚至大企业也在缩减人员&#xff0c;人才需求量总体降低了&#xff0c;但是&#xff0c;毕业生那么多&#xff0c;导致有一部分大学生迟迟找不到工作。…

web基础及http协议 (二) apache

一、httpd 安装组成 http 服务基于 C/S 结构 1 .常见http 服务器程序 httpd apache&#xff0c;存在C10K&#xff08;10K connections&#xff09;问题 nginx 解决C10K问题lighttpd IIS .asp 应用程序服务器 tomcat .jsp 应用程序服务器 jetty 开源的servlet容器&#xf…

[SSD 测试 1.3] 硬件测试之主控测试用例

专栏 《深入理解SSD》 主控制器方面,消费级市场的主要厂商包括三星、英特尔、西部数据、海力士和东芝,他们的产品涵盖了SATA和Nvme Pcie3.0/4.0接口。而在企业级市场,国内厂商华为海思H181x系列也有存在。在实际速度方面,该速度会受到制程及后端Nand Flash接口速率和通道数…

Postgresql源码(124)两个事务更新同一行数据时的行为和原理分析

XactLockTableWait函数、transactionid锁的一些原理和分析 结论 更新行时&#xff0c;会根据xmax拿transactionid锁&#xff0c;等对应的事务结束。 如果结束是回滚&#xff0c;则heap_update继续更新。如果结束时提交&#xff0c;则heap_update要返回上层ExecUpdate调用EvalP…

用Dockerfile创建PostgreSQL数据库

官网下载基本镜像 [rootlocalhost ~]# docker pull postgres:latest创建项目目录 [rootlocalhost ~]# mkdir /root/postgresql创建一个名为 “Dockerfile” 的文件 [rootlocalhost ~]# vim Dockerfile # 使用官方的PostgreSQL镜像 FROM postgres:latest# 设置环境变量&#…