当前位置: 首页 > java >正文

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.xdnf.cn/news/14013.html

相关文章:

  • 普通属性 vs ref 包装属性
  • C#迭代器
  • xa_get_mark 简介
  • PyCharm 配置python解释器
  • 跨网软件如何重塑能源行业?推荐高效协同的跨网传输方案
  • 在python中获取符合特定模式的文件
  • 《Java开发工具全解析:从基础到前沿》
  • MySQL数据库死锁全解析:发生场景、定位方法、解决方案及最佳实践
  • 京东率先开启“3D信息流时代” 让购物更有趣
  • TortoiseSVN 下载指定版本客户端及对应翻译(汉化)包
  • ABP vNext + OpenIddict:自定义 OAuth2/OpenID Connect 认证策略
  • 搭建前端项目 Vue+element UI引入 步骤 (超详细)
  • 2025年第二届仿真与电子技术国际学术会议(ICSET 2025)
  • 用 PlatformIO + ESP-IDF 框架开发 ESP32
  • OB Cloud × 海牙湾:打造高效灵活的金融科技 AI 数字化解决方案
  • 安科瑞中小工商业储能监测-能量管理系统Acrel-2000ES
  • SAP 生产订单报工检查报错异常(接口)
  • 智能客服不再冰冷,声网AI为品牌构建情绪接口
  • 仪表刻度动态显示控件--小三角指针
  • 语言模型进化论:从“健忘侦探”到“超级大脑”的破案之旅
  • MQTT协议
  • 使用Word2Vec实现中文文本分类
  • [深度学习]卷积神经网络
  • 【王阳明代数集合论基础】情感分析之句子的基本结构
  • MiniMind(1)Tokenizer与训练数据
  • 从Pura 80系列影像和鸿蒙AI融合看华为创新的“不可复制性”
  • [Rviz2报错,已解决!]导入urdf模型错误:Could not load mesh resource 。。。
  • 【Vue PDF】Vue PDF 组件初始不加载 pdfUrl 问题分析与修复
  • 【图像恢复算法】 ESRGAN Real-ESRGAN的配置和应用
  • SSE详解