在顺序表中插入元素_C语言 一看就懂

2023-11-03

一看就懂的数据结构带注释

数据结构_在顺序表中插入元素_C语言版

头文件和定义结构体:

#include<stdio.h>
#include<stdlib.h>
#define Initsize 10 //初始的数组长度
typedef struct{ //定义一个结构体(自己定义一个结构类型)
int *data;
int Maxsize;
int Length;
}List_dynamic; //结构类型的名字,就像int char string等

主函数如下:

int main() //动态主函数
{
List_dynamic List;
Dynamic_InitList(List); //初始化顺序表
int len; //要增加的数组长度
IncreaseSize(List,len); //给顺序表增加长度
int sum_Insert,sum_position; //要插入的数和要插入的位置
InsertList(List,sum_Insert,sum_position); //给顺序表插入元素
system(“pause”);
return 0;
}

初始化顺序表的方法:

void Dynamic_InitList(List_dynamic &List){ //初始化顺序表
List.data=(int )malloc(Initsizesizeof(int)); //用malloc给顺序表的数组分配Initsize(初始化长度)所需要的内存空间
List.Maxsize=Initsize; //当前顺性表最大长度即为初始化Initsize的长度
List.Length=0; //当前长度为0
}

增加顺序表长度:

void IncreaseSize(List_dynamic &List,int len){ //把顺序表最大长度变长
int p=List.data; //定义p指针指向顺序表的数组
List.data=(int *)malloc((Initsize+len)*sizeof(int)); //重新在内存中开辟一块变长后的顺序表
for(int i=0;i<List.Length;i++) //把之前的顺序表全都复制到刚刚创建好的顺序表在内存中的位置
List.data[i]=p[i];
List.Maxsize=List.Maxsize+len; //顺序表的最大长度变长
free§; //释放p指针指向的顺序表
}

在顺序表中插入元素(包括尾部增加元素)

bool InsertList(List_dynamic &List,int sum_Insert,int sum_position){ //插入顺序表元素的方法,返回布尔类型
if(sum_position>List.Length+1||sum_position<1) //先判断要插入的位置是否有错误,不能大于数组当前长度+1(不排除要在顺序表后加一个元素),也不能小于1
return false;
if(sum_position>List.Maxsize) //不能大于顺序表的当前储存空间
return false;
for(int i=List.Length;i>=sum_position;i–) //把插入位置以及之后的元素全部后移以为,把要插入的位置腾出来
List.data[i+1]=List.data[i];
List.data[sum_position-1]=sum_Insert; //把要插入的元素放在要插入的位置
List.Length++; //顺序表长度加1
return true;
}

总结代码如下

#include<stdio.h>
#include<stdlib.h>
#define Initsize 10 //初始的数组长度
typedef struct{ //定义一个结构体(自己定义一个结构类型)
int *data;
int Maxsize;
int Length;
}List_dynamic; //结构类型的名字,就像int char string等
void Dynamic_InitList(List_dynamic &List){ //初始化顺序表
List.data=(int )malloc(Initsizesizeof(int)); //用malloc给顺序表的数组分配Initsize(初始化长度)所需要的内存空间
List.Maxsize=Initsize; //当前顺性表最大长度即为初始化Initsize的长度
List.Length=0; //当前长度为0
}
void IncreaseSize(List_dynamic &List,int len){ //把顺序表最大长度边长
int p=List.data; //定义p指针指向顺序表的数组
List.data=(int *)malloc((Initsize+len)*sizeof(int)); //重新在内存中开辟一块变长后的顺序表
for(int i=0;i<List.Length;i++) //把之前的顺序表全都复制到刚刚创建好的顺序表在内存中的位置
List.data[i]=p[i];
List.Maxsize=List.Maxsize+len; //顺序表的最大长度变长
free§; //释放p指针指向的顺序表
}
bool InsertList(List_dynamic &List,int sum_Insert,int sum_position){ //插入顺序表元素的方法,返回布尔类型
if(sum_position>List.Length+1||sum_position<1) //先判断要插入的位置是否有错误,不能大于数组当前长度+1(不排除要在顺序表后加一个元素),也不能小于1
return false;
if(sum_position>List.Maxsize) //不能大于顺序表的当前储存空间
return false;
for(int i=List.Length;i>=sum_position;i–) //把插入位置以及之后的元素全部后移以为,把要插入的位置腾出来
List.data[i+1]=List.data[i];
List.data[sum_position-1]=sum_Insert; //把要插入的元素放在要插入的位置
List.Length++; //顺序表长度加1
return true;
}
int main() //动态主函数
{
List_dynamic List;
Dynamic_InitList(List); //初始化顺序表
int len; //要增加的数组长度
IncreaseSize(List,len); //给顺序表增加长度
int sum_Insert,sum_position; //要插入的数和要插入的位置
InsertList(List,sum_Insert,sum_position); //给顺序表插入元素
system(“pause”);
return 0;
}

删除顺序表中的元素

bool ListDelete(List_dynamic &List,int sum_position){ //删除顺序表中的元素
if(sum_position>List.Length+1||sum_position<1)
return false;
for(int i=sum_position;i<=List.Length;i–)
List.data[i]=List.data[i+1];
List.Length–;
return true;
}

在这里插入图片描述

有不对的地方欢迎指正

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在顺序表中插入元素_C语言 一看就懂 的相关文章

随机推荐

  • python对字符串使用min和max

    今天日常刷题 看到了一个最长公共前缀比较高级的解法 题目如下 在评论区看到一个比较聪明的解法 class solution def st strs if not strs return str1 min strs str2 max strs
  • nacos频繁挂

    背景 公司使用的nacos 频繁挂 查看日志发现 Java HotSpot TM 64 Bit Server VM 25 144 b01 for linux amd64 JRE 1 8 0 144 b01 built on Jul 21 2
  • word2vec词向量训练及中文文本相似度计算

    本文是讲述如何使用word2vec的基础教程 文章比较基础 希望对你有所帮助 官网C语言下载地址 http word2vec googlecode com svn trunk 官网Python下载地址 http radimrehurek c
  • matlab armax 预测,MATLAB中ARMA模型预测差分问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我MATLAB预测风速的程序 程序不是我自己写的 我也是拿来参考自己的毕业作业的 每条程序旁的中文是我自己的理解 我也不知道对不对 程序1 X load C Users asus Deskt
  • 华为OD机试 - 计算礼品发放的最小分组数目(Java)

    题目描述 又到了一年的末尾 项目组让小明负责新年晚会的小礼品发放工作 为使得参加晚会的同事所获得的小礼品价值相对平衡 需要把小礼品根据价格进行分组 但每组最多只能包括两件小礼品 并且每个分组的价格总和不能超过一个价格上限 为了保证发放小礼品
  • vue 和 js 获取 dom节点下的某个元素,然后设置样式

    vue获取dom节点下的类名 然后修改样式 div div class a 提到岁月 你们总说它是长河 流得头也不回 div div class a 少不更事的年纪 我也用过老成口气 念过孔夫子的 逝者如斯乎 不舍昼夜 div div cl
  • 手写数字识别——算法

    识别方法一 基于结构模式 脱机识别 例子 基于基元和七段式数字的手写数字识别 日常生活中经常可以看到用七段式数字表示数字 如电子手表的数字显示等 它用火柴棍拼图的方式能够简单有效的表示出0 9 10个阿拉伯数字 例子 基于三次样条和整体特征
  • css img自适应盒子尺寸

    首先保证图片可以填满 然后纵向居中 img cantainer position relative width 260px height 150px overflow hidden img position absolute top 50
  • 最详细的Java入门完整教程,学Java先收藏了!

    从 1995 年第一个版本发布到现在 Java 语言已经在跌宕起伏中走过了 26 年 最新的 Java 版本也已经迭代到 Java 16 java是有一个庞大的生态系统 它的覆盖范围非常广 而且已经连续十几年位居开发语言的榜首 所以java
  • 浅度学习模块化与解耦

    目录 1 为什么要模块化 2 模块设计原则 3 模块化开发的的优缺点 4 解耦与通信 4 1 公共模块的下层 4 2 面向接口调用 4 3 面向协议的调用 在开篇之前引用一句话 一派是说app开发并不需要什么狗P架构 第二派说我们有自己NB
  • 圈圈教你玩转USB第三版 光盘资料

    下载官网 http service buaapress com cn mzs file detail id 2199 key b2fec916cc9fa216abe6fc836e3f7e35
  • Swift中的‘open‘关键字是什么?

    本文翻译自 What is the open keyword in Swift The ObjectiveC swift file from the standard library contains the following few l
  • C语言基础代码(1)

    C语言是计算机及其相关专业学生必修的语言 我在大一下学期就已经学习了 前段时间 我又将谭浩强编写的C程序设计 也就是我C语言学习的课本看了一遍 温故而知新 受益良多 于是就萌发了一个想法 想将C语言学习当中一些基础的代码做一个总结归纳 在总
  • 牛客专项练习之设计模式

    开头先一句水平有限 仅供参考 有错误可以提醒我改一下 感谢 1 如果需要一个语言解释执行 并且可以将语言中的句子表示为一个抽象语法树的时候 对效率要求不高的情况下 应该选择何种设计模式 题目中的解释二字就告知选项 解释器模式 给定语言 定义
  • Nginx额外篇之一些错误解决办法

    错误1 配置了Nginx 但是打开页面是乱码 解决办法如下 在你个人的sever端添加如下2行 default type text html 设置内容输出内容型为 html htm shtml 三种类型 charset utf 8 设置字符
  • java导出word,红色的单元格背景色显示为黑色

    之前有这个问题 当我用正版office看导出word文件的时候 单元格背景是红色 当我换wps看导出的文件的时候 单元格背景是黑色的 离谱 所以我当初为了省事直接和客户说 请使用正版office 狗头 然后今天闲着没事情 再看ftl模板的时
  • 001问

    偶然间 我的好朋友问起我这个问题 我还真没有好好思考过这个问题 我查了Go语言圣经 知名博客 以及Go中文文档 发现都没有阐述这个问题 后来找来找去也只有下面的解释 for的初始化语句不能是任何类型的语句 必须是 简单语句 短变量声明 就是
  • Th5.6:智能指针(unique_ptr)之详述1

    本小节学习的知识点分别是智能指针 unique ptr 之详述 常用操作 今天总结的知识分为以下2个大点 1 unique ptr概述 常用操作 1 1 常规初始化 unique ptr和new配合 1 2 make unique 函数 2
  • 转:idea中language level设置

    一 idea中项目的language level的含义 language level指的是编译项目代码所用的jdk版本 那么 从这个定义出发会有两个小问题 第一 如果project sdk是jdk8 那么language level应该是多
  • 在顺序表中插入元素_C语言 一看就懂

    一看就懂的数据结构带注释 数据结构 在顺序表中插入元素 C语言版 头文件和定义结构体 include