2-数据结构-线性表之顺序表的动态分配

2023-11-19

说明:

        由于原来顺序表的静态分配,浪费空间,且存在溢出现象,因此采取动态分配的方式,创建顺序表中的数组。跟C语言正常动态分配一样,需要直到扩充的大小,和数组指针即可。

代码如下:

        看着多,其实原理差不多,主要知道哪些操作即可,无需了解具体代码。

#include <stdio.h>
#include <malloc.h>
#define initsize 3
typedef struct //定义一个动态顺序表的结构体,并起别名为sqlist 
{
	int *data; //因为是动态数组,所以先定一个指针,表示数组,后面malloc动态分配即可 
	int max;
	int length;
	
}sqlist;

void initlist(sqlist &l)//初始化顺序表操作,并创建动态数组 
{
	l.data=(int*)malloc(sizeof(int)*initsize);
	l.length=0;
	l.max=initsize;
}
void increaselist(sqlist &l,int len)//扩充顺序表操作即最大容量 
{
	int *p=l.data;//先来个新的动态数组,从放表中数据 
	l.data=(int*)malloc(sizeof(int)*(initsize+len));//给顺序表进行动态扩充(initsize+len) 
	int i;
	
	for(i=0;i<l.max;i++)//给原来顺序表中的数据,赋值到新的顺序表中 
	{
		l.data[i]=p[i];
	}
	l.max=l.max+len;
}

int main()
{
	sqlist l;
	initlist(l);
	//扩容前的顺序表存储空间 
	int i;
	printf("扩容前的容量\n");
	printf("max=%d\n",l.max); 
	for(i=0;i<l.max;i++)
	{
		l.data[i]=i+1;
		l.length++;
		printf("%d ",l.data[i]) ;
	}
	int len;
	printf("\n你想给顺序表扩大多少\n");
	scanf("%d",&len);
	increaselist(l,len);//扩容len个大小的空间
	
	printf("\n扩容后的容量\n");
	printf("max=%d\n",l.max); 
	int k;
	for(k=0;k<l.max;k++)
	{
		l.data[k]=k+1;
		l.length++;
		printf("%d ",l.data[k]);
	}
	return 0;	
} 

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

2-数据结构-线性表之顺序表的动态分配 的相关文章

  • document this 插件 mac_又一个折腰的 VSCode 插件

    1 最近这两周周末都在折腾 VSCode 白板插件 其主要原理是将 Excalidraw 1 嵌入到 VSCode 的 WebView 中 如果所有功能正常 那么相比于在 Web 中使用 在 VSCode 中将会更方便 截至目前 该插件的功
  • Power BI——SUMX函数(对列操作)

    1 语法 说明 第一个参数为被运算的表 table 第二个参数是对表中的每一行计算的表达式 2 步骤 SUMX 将迭代第一个参数中指定的表 一次一行 并完成第二个参数中指定的计算 3 案例 总销售额SUMX SUMX 销售表 销售表 数量
  • 【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码实现 1 概述 Dijkstr
  • 基于 tensorflow 的鲜花识别

    本文中 采用了卷积神经网络的深度学习方法来实现对鲜花种类的高精度识别 先是对原始图像进行预处理 然后是以LeNet 5 卷积神经网络模型为基础建立网络模型 再进行模型训练后得到鲜花识别分类器 最后分析实验结果并与其它花卉识别的算法进行对比
  • MySQL的JDBC操作入门案例 IDEA 实现

    package cn itcast jdbc import java sql public class JdbcDemo01 public static void main String args throws SQLException 1
  • 设计模式学习笔记(一)如何评判代码质量的好坏?

    1 评判代码质量好坏的角度 在目前的面板项目中 经常听到同事用 代码写的很烂 这是什么鬼 我去 这个思路很棒啊 等字眼来评判项目中部分代码逻辑的好坏 经过阅读一些文章和学习技术大神分享的内容 了解到真正评判代码好坏不应该笼统的用 好 烂 这

随机推荐

  • java实现starteam配置库中checkout对应的文件

    1 所属jar包 starteam sdk 5 2 jar 2 样例代码 package com comtop qcms base starteam import java io IOException import com comtop
  • 结果解读_染色体CNV检测结果解读

    染色体CNV检测的结果 大致可以分三类 完全正常或多态性 致病性片段 及 临床意义未明 值得一提的是 由于分子遗传学检测技术的发展 比如染色体CNV检测 染色体层面的产前诊断的时间不再局限于细胞培养的最佳时间 18 26周 脐血穿刺也几乎被
  • 编译mysql出现CMake Error at cmake/readline.cmake:83 (MESSAGE)

    本文转载至 http blog 163 com sz2273 pr blog static 41264296201361354426670 Could NOT find Curses missing CURSES LIBRARY CURSE
  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98 99中 我们介绍了电商项目中的订单模块服务 那么最后就是需要进行支付动作 那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能 来进一步完成订单提交后的支付动作 支付宝的接口使用可以登录官网开发指南详情去了解
  • java lazy_Spring注解之@Lazy注解使用解析

    Lazy用于指定该Bean是否取消预初始化 主要用于修饰Spring Bean类 用于指定该Bean的预初始化行为 使用该Annotation时可以指定一个boolean型的value属性 该属性决定是否要预初始化该Bean lazy代表延
  • 如何用3个方法做到照片数据恢复…

    照片数据恢复是否能够做到 现在电脑已经成为社会的主流工具 因为很多工作有已经通过互联网的桥梁达到了更高的利益 基本现在的生活已经离不开电脑的存在 当我们电脑中的照片或者相机什么的照片删除之后该怎么办 本期要给大家介绍一下照片丢失该怎么办 不
  • NHCP H4: Network Resource Management Topic

    NHCP H4 Network Resource Management Topic Cloud computing Single Choice T F items Single Choice 1 部署华为云计算解决方案时 一般将服务器BMC
  • Pygame 教程(4)拓展:使用 subsurface 方法

    原文 图像传输和绘制文本 在本拓展文章 将展示如何使用pygame Surface subsurface方法实现原文中的更改线条粗细步骤 pygame Surface subsurface将获取原Surface对象的子Surface它与原S
  • linux deepin/ubuntu系统 远程连接windows/linux 用rdesktop

    一 首先使用rdesktop 主要是rdesktop非常容易安装 极度简单 二 安装 1 duso apt get install rdesktop 三 windows 配置 1 远程设置 系统设置的远程设置 四 rdesktop连接win
  • C# 图片操作(图片读取,保存,转换,传输)

    JPG PNG GIF BMP图片格式的区别 类型 优点 缺点 应用场景 相同图片大小比较 BMP 无损压缩 图质最好 文件太大 不利于网络传输 152K GIF 动画存储格式 最多256色 画质差 53K PNG 可保存透明背景的图片 画
  • TCP/IP网络编程 第五章:实现基于TCP的服务端/客户端(2)

    回声客户端的完美实现 在上一章中 我们提出了实现的回声客户端存在的问题 这里我们来解决一下 先给出对应的服务端和客户端代码 while str len read clnt sock message BUF SIZE 0 write clnt
  • 使用cloudflare+wzfou为自己的网站配置CDN加速

    本文同步于个人博客 蝴蝶飞不过沧海 Blog 本文链接 泛播 Cloudflare 挖站否 Wzfou 为什么用到挖站否 单独泛播不就可以作cdn加速吗 众所周知泛播 cloudflare 国外知名免费cdn服务商无需网站备案 但有个缺点就
  • Latex安装教程

    Latex安装教程 TeXLive TeXstudio 1 TeXLive安装 2 TeXstudio安装 TeXLive和TeXstudio的安装包 链接 https pan baidu com s 17rgbGKE9t7oKd FePo
  • MOOC PTA 08-图8 How Long Does It Take

    http pta patest cn pta test 18 exam 4 question 631 构建图的邻接矩阵 寻找入度为0的顶点 将其压入队列 出队列时对其相连接的顶点入度减1 更新每个顶点的最大时间 刚开始提交 3和5 测试点过
  • C#笔记7——发送电子邮件C#笔记8——多功能电子邮件发送程序实例

    C 笔记7 发送电子邮件 最近用C 测试了一下发邮件功能 用QQ邮件服务器发送邮件 亲测代码如下 for send mail using System Net Mail using System Net using System Threa
  • 使用Vue3自定义指令,让你的应用更具交互性

    个人网站 紫陌 笔记分享网 想寻找共同学习交流 共同成长的伙伴 请点击 前端学习交流群 1 认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令 v show v for v model等等 除了使用这些指令之外 Vue 也允许我们
  • 永磁同步电机矢量控制(二)——控制原理与坐标变换推导

    2 永磁同步电机控制原理 2 1 从PMSM电机的数学模型出发 dq 轴 电压方程 dq 轴 轴磁链方程 dq 轴 转矩方程 dq 轴 运动方程 分析上述方程 如果我们能够控制 id 0 那么电压方程就可简化为 转矩方程为 运动方程为 以上
  • string (std::string)转换为QString的用法(含中文)

    string s 123 QString str QString fromStdString s 含中文时的转换 std string str 你好世界 QString Name QString fromLocal8Bit str c st
  • redis配置认证密码

    redis配置密码 1 通过配置文件进行配置 yum方式安装的redis配置文件通常在 etc redis conf中 打开配置文件找到 requirepass foobared去掉行前的注释 并修改密码为所需的密码 保存文件 requir
  • 2-数据结构-线性表之顺序表的动态分配

    说明 由于原来顺序表的静态分配 浪费空间 且存在溢出现象 因此采取动态分配的方式 创建顺序表中的数组 跟C语言正常动态分配一样 需要直到扩充的大小 和数组指针即可 代码如下 看着多 其实原理差不多 主要知道哪些操作即可 无需了解具体代码 i