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

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

相关文章:

  • 2025虚幻人物模型积累
  • 手阳明大肠经之下廉穴
  • LeetCode 2529.正整数和负整数的最大计数
  • 【C语言指南】数组作为函数参数的传递机制
  • Rust 学习笔记:关于处理任意数量的 future 的练习题
  • JS进阶 Day01
  • 多目标粒子群算法可以出pareto图
  • 2025年6月英语四级CET-4作文预测10篇7页PDF
  • 危险品运输行业观察
  • 力扣-279.完全平方数
  • 宝塔面板WordPress中使用Contact Form 7插件收不到邮件的解决方法
  • 深度解析一下 llama.cpp 的源代码
  • 深入解析 JavaScript 抽象类与普通类的本质区别
  • P8784 [蓝桥杯 2022 省 B] 积木画
  • 关于阿里云-云消息队列MQTT的连接和使用,以及SpringBoot的集成使用
  • Docker 下备份 Mariadb 数据库文件
  • 进程和线程的相关命令
  • git checkout 详解
  • 内接圆和外接矩形
  • 1.2、SDH的复用结构
  • vr全景网站开发制作/广告外链购买交易平台
  • 织梦网做企业网站需要授权吗/2023年6月份又封城了
  • 浙江建设三类人员报名网站/谷歌seo关键词排名优化
  • 前端开发做网站吗/百度seo关键词优化软件
  • 工厂软件管理系统/seo关键词优化费用
  • 哈尔滨网站设计培训班/如何进入网站