Day01_C数据结构

01.数据结构

02.段错误出现的四种场景

02.实现顺序表的头插、尾插、头删、尾删(释放顺序表)

main.c

#include "seq.h"                
int main(){                     seq_p S=create_seqlist();   inputall(S);                insert_head(S);             delete_head(S);             insert_tail(S);             delete_tail(S);             seq_free(S);                return 0;                   
}                               

seq.c

 #include "seq.h"                                                                                                       seq_p create_seqlist()                                                                                                 {                                                                                                                      seq_p S=(seq_p)malloc(sizeof(seq_list));                                                                           if(S==NULL){                                                                                                       return NULL;                                                                                                   }                                                                                                                  bzero(S,sizeof(seq_list));                                                                                         return S;                                                                                                          }                                                                                                                      int empty_seq(seq_p S)                                                                                                 {                                                                                                                      if(S==NULL){                                                                                                       printf("入参为空\n");                                                                                          return -2;                                                                                                     }                                                                                                                  return S->len==0?1:0;                                                                                              }                                                                                                                      int full_seq(seq_p S)                                                                                                  {                                                                                                                      if(S==NULL){                                                                                                       printf("入参为空\n");                                                                                          return -2;                                                                                                     }                                                                                                                  return S->len==MAX?1:0;                                                                                            }                                                                                                                      //输出数据函数                                                                                                         void output(seq_p S)                                                                                                   {                                                                                                                      int i;                                                                                                             for(i=0;i<S->len;++i){                                                                                             printf("%d ",S->arr[i]);                                                                                       }                                                                                                                  puts("");                                                                                                          }                                                                                                                      //输入数据函数                                                                                                         seq_p input(seq_p S)                                                                                                   {                                                                                                                      printf("请输入您需要插入的数据:");                                                                                 scanf("%d",&S->number);                                                                                            return S;                                                                                                          }                                                                                                                      //先插入数据中的顺序列表                                                                                               seq_p inputall(seq_p S)                                                                                                {                                                                                                                      printf("请输入您要放入空列表中的个数:");                                                                           scanf("%d",&S->num1);                                                                                              printf("请输入数据:");                                                                                             getchar();                                                                                                         for(int i=0;i<S->num1;++i){                                                                                        scanf("%d",&S->arr[i]);                                                                                        S->len++;                                                                                                      }                                                                                                                  return S;                                                                                                          }                                                                                                                      //头插                                                                                                                 seq_p insert_head(seq_p S)                                                                                             {                                                                                                                      int m=full_seq(S);                                                                                                 if(m==1){                                                                                                          printf("顺序列表已满,不能插入数据\n");                                                                         output(S);                                                                                                     return S;                                                                                                      }else if(m==0){                                                                                                    input(S);                                                                                                      int i;                                                                                                         for(i=S->len;i>0;--i){                                                                                         S->arr[i]=S->arr[i-1];                                                                                     }                                                                                                              S->arr[0]=S->number;                                                                                           S->len++;                                                                                                      printf("输出插入头部数据的顺序列表:\n");                                                                       output(S);                                                                                                     return S;                                                                                                      }                                                                                                                  }                                                                                                                      //头删                                                                                                                 seq_p delete_head(seq_p S)                                                                                             {                                                                                                                      int n=empty_seq(S);                                                                                                if(n==1){                                                                                                          printf("顺序列表为空,没有数据可以删除\n");                                                                    return S;                                                                                                      }else if(n==0){                                                                                                    for(int i=1;i<S->len;++i){                                                                                     S->arr[i-1]=S->arr[i];                                                                                     }                                                                                                              S->len=S->len-1;                                                                                               printf("输出删除头部数据的顺序列表\n");                                                                        output(S);                                                                                                     return S;                                                                                                      }                                                                                                                  }                                                                                                                      //尾插                                                                                                                 seq_p insert_tail(seq_p S)                                                                                             {                                                                                                                      int m=full_seq(S);                                                                                                  if(m==1){                                                                                                          printf("顺序列表已满,不能插入尾部数据\n");                                                                     output(S);                                                                                                     return S;                                                                                                      }else if(m==0){                                                                                                    input(S);                                                                                                      S->arr[S->len]=S->number;                                                                                      S->len++;                                                                                                      printf("输出插入尾部数据的顺序列表\n");                                                                        output(S);                                                                                                     return S;                                                                                                      }                                                                                                                  }                                                                                                                      //尾删                                                                                                                 seq_p delete_tail(seq_p S)                                                                                             {                                                                                                                      int n=empty_seq(S);                                                                                                if(n==1){                                                                                                          printf("顺序列表为空,尾部没有数据可以删除\n");                                                                return S;                                                                                                      }else if(n==0){                                                                                                    S->arr[S->len]=0;                                                                                              S->len=S->len-1;                                                                                               printf("输出删除尾部数据的顺序列表:\n");                                                                       output(S);                                                                                                     return S;                                                                                                      }                                                                                                                  }                                                                                                                      //释放顺序表                                                                                                           seq_p seq_free(seq_p S)                                                                                                {                                                                                                                      printf("释放顺序列表前数据:\n");                                                                                   output(S);                                                                                                         if(S!=NULL){                                                                                                       free(S);                                                                                                       S=NULL;                                                                                                        }                                                                                                                  printf("%p\n",S);                                                                                                  return S;                                                                                                          }                                                                                                                      

seq.h

#ifndef __SEQ_H__
#define __SEQ_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 6
typedef struct seq_list
{int arr[MAX];int len;int num1;//开始输入数组中个数int number;//输入数组中的数据
}seq_list,*seq_p;
seq_p create_seqlist();
int empty_seq(seq_p S);
int full_seq(seq_p S);
void output(seq_p S);
seq_p input(seq_p S);
seq_p inputall(seq_p S);seq_p insert_head(seq_p S);
seq_p delete_head(seq_p S);
seq_p insert_tail(seq_p S);
seq_p delete_tail(seq_p S);
seq_p seq_free(seq_p S);
#endif

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

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

相关文章

触觉智能RK3576核心板,工业应用之4K超高清HDMI IN视频输入

在工业自动化、医疗影像、轨道交通、电力调度等行业&#xff0c;对高质量视觉信号的实时捕捉和分析需求日益提高。传统工业相机的低分辨率采集模糊了关键细节&#xff0c;延迟的处理过程导致生产环节无法形成闭环控制&#xff0c;让不同硬件之间的协作障碍重重。 触觉智能RK35…

清新文艺手绘学习教育培训竞标汇报PPT模版分享

简约手绘花朵PPT模版&#xff0c;读书学习教育培训学习总结设计PPT模版&#xff0c;商业竞标企业创业总结汇报演讲报告PPT模版&#xff0c;创意动物卡通PPT汇报模版&#xff0c;学术报告PPT模版 清新文艺手绘学习教育培训竞标汇报PPT模版分享

【搜狗输入法】如何使用自定义标点设置来输出直角引号

【搜狗输入法】如何使用自定义标点设置来输出直角引号 前言&#xff1a; 起因是&#xff0c;我在学习Markdown的语法规范的时候 需要用到直角引号「」 但是键盘没法直接打出来&#xff0c;就想用搜狗输入法的自定义标点 结果发现这功能完全是个鸡肋&#xff0c;没法用 一…

HarmonyOS5 运动健康app(二):健康跑步(附代码)

一、数据模型&#xff1a;构建运动记录的数字骨架 代码通过RunRecord接口定义了跑步数据的核心结构&#xff1a; interface RunRecord {id: string; // 记录唯一标识date: Date; // 跑步日期distance: number; // 距离&#xff08;公里&#xff09;duratio…

29-Oracle 23ai Flashback Log Placement(闪回日志灵活配置)

小伙伴们有没有被各种存储路径满导致的业务崩&#xff0c;半夜起来清理的经历。一不小心 FRA写满了&#xff0c;导致了实例hang住。 OCM考试&#xff0c;时不时就会冒出来这个直接给instance hang&#xff0c;本就卡的环境中脑袋都卡壳、无从下手&#xff0c;一脸懵直接崩。 …

React表单处理:如何获取输入框(input)的值?(受控组件)

系列回顾&#xff1a; 在前面的文章中&#xff0c;我们已经掌握了State、Props、事件处理、列表渲染和条件渲染。我们的应用已经能展示动态内容并响应用户的点击。现在&#xff0c;我们要 tackling 一个非常常见的需求&#xff1a;如何获取用户在表单输入框&#xff08;<inp…

探索现代 Web 开发:从 HTML5 到 Vue.js 的全栈之旅

在当今快速发展的互联网时代&#xff0c;Web 开发已经成为构建数字世界的重要基石。无论是企业级应用、社交媒体平台&#xff0c;还是个人博客和电商平台&#xff0c;Web 技术都在背后默默支撑着这些系统的运行。随着前端技术的不断演进&#xff0c;开发者们已经不再局限于传统…

ElasticSearch聚合查询从15秒到1.2秒的深度优化实践

一、问题背景 在金融风控场景中,我们需要对90天内的交易数据进行多维度聚合分析(按风险等级、地区、金额分段等)。随着数据量增长到日均3000万+记录,原有查询响应时间逐渐恶化至15秒以上,严重影响了业务决策效率。 二、原始架构性能分析 1. 集群拓扑 # 原单节点配置 N…

2025.06.09【读书笔记】|PromptBio:让生信分析更简单的AI平台

文章目录 一、PromptBio 是什么&#xff1f;二、主要功能介绍1. 对话式智能体&#xff0c;像聊天一样做分析2. 自动化工作流&#xff0c;省时省力3. 数据管理一站式搞定4. 机器学习也能一键搞定5. “无代码”到“全代码”&#xff0c;人人都能用 三、适合哪些人用&#xff1f;四…

实战解析:如何用克魔(KeyMob)等工具构建iOS应用稳定性与数据可观测体系

在iOS开发项目逐渐走向复杂化的今天&#xff0c;团队对“可观测性”的要求正不断提升。开发者不仅要知道App是否运行正常&#xff0c;更要明确“为什么异常、在哪里异常、是否可复现”。传统的调试工具往往侧重单一维度&#xff0c;要么是资源监控、要么是日志分析&#xff0c;…

如何轻松实现多源混算报表

报表作为综合业务&#xff0c;数据来源多种多样。传统实现多源混合查询报表要通过 ETL 将数据同库&#xff0c;但这种方式数据时效性太差使用场景受限。通过逻辑数仓能获得较强的数据实时性&#xff0c;但体系又过于沉重&#xff0c;为报表业务搭建逻辑数仓有点得不偿失。需要一…

Docker|简单入门

文章目录 Docker简介Docker和虚拟机的联系和区别基本原理和概念镜像容器仓库 Docker安装配置容器化和Dockerfile实践环节Docker Compose Docker简介 Docker是一个用于构建build、运行run、传送share应用程序的平台&#xff0c;可以把应用程序打包成一个个的集装箱&#xff0c;…

阿里云云原生数据库PolarDB和普通云数据库的区别?

文章目录 前言一、云数据库的演进&#xff1a;从“托管”到“原生”的跨越二、PolarDB的核心创新&#xff1a;重新定义云数据库的能力边界1. 存算分离架构&#xff1a;打破资源绑定的“枷锁”2. 多模引擎与兼容生态&#xff1a;降低应用迁移成本3. 智能化运维&#xff1a;让数据…

SNN学习(4):真实的生物神经学中神经元和人脑结构学习

目录 一、基础知识 1 简单神经元回路中的信号运作 2 高级功能相关的复杂神经元回路 3 细胞体、树突和轴突 3.1 神经元细胞 3.2 非神经元细胞 3.3 神经胶质细胞 3.4 神经细胞的信号传递 3.4.1 动作电位的特性 3.4.2 兴奋和抑制 3.4.3 电传递 二、大脑皮层及视觉系统…

第六天 界面操作及美化(6.1 建立菜单及异步调用)

6.1 建立菜单及异步调用 在程序中&#xff0c;菜单&#xff08;Menu&#xff09;是一种常见的用户界面元素&#xff0c;在程序中起到了组织功能、提高用户体验、提供快捷方式和帮助文档等重要作用。通过合理使用菜单&#xff0c;可以使程序的功能更加清晰、操作更加便捷&#…

论文解析:一文弄懂ResNet(图像识别分类、目标检测)

目录 一、相关资源 二、Motivation 三、技术细节 1.残差学习过程 2.快捷连接类型 (1)Identity Shortcuts&#xff08;恒等捷径&#xff09; (2)Projection Shortcuts&#xff08;投影捷径&#xff09; (3)两种捷径对比 3.深层瓶颈结构Deeper Bottleneck Architectures…

动态规划算法的欢乐密码(二):路径问题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 一、例题讲解 1.1. 不同路径 题目要求是计算从网格的左上角&#xff08;起点&#xff09;到右下角&#xff08;终点&#xff09;的所有不同路径的数量。机器人每次只能向下或向右移动一步。如下图所示&#xff0…

嵌入式相关开源项目、库、资料------持续更新中

嵌入式相关开源项目、库、资料------持续更新中 学习初期最难找的就是找学习资料了&#xff0c;本贴精心汇总了一些嵌入式相关资源&#xff0c;包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux、计算机等资源&#xff0c;并且在不断地更新中&#xff0c;致力…

图像处理与机器学习项目:特征提取、PCA与分类器评估

图像处理与机器学习项目:特征提取、PCA与分类器评估 项目概述 本项目将完成一个完整的图像处理与机器学习流程,包括数据探索、特征提取、主成分分析(PCA)、分类器实现和评估五个关键步骤。我们将使用Python的OpenCV、scikit-learn和scikit-image库来处理图像数据并实现机器…

MATLAB | 如何使用MATLAB获取《Nature》全部绘图 (附23-25年图像)

文末有全部图片资源 我在两年前更过如何用 MATLAB 爬取 《Nature》全部插图&#xff0c;最近又有人问我有没有下载好的24&#xff0c;25年插图的压缩包&#xff0c;于是又去拿代码运行了一下&#xff0c;发现两年前写的代码今天居然还能用&#xff0c;代码如下&#xff1a; f…