D.S基本操作及存储结构总结

线性表

基本操作(12个)

//线性表的基本操作 12个//构造一个空的线性表L
void InitList(SqList &L);//销毁线性表L
void DestroyList(SqList &L);//将线性表L重置为空表
void ClearList(SqList &L);////表判空:空 返回TRUE(1) 非空返回FALSE(0)
Status ListEmpty(SqList L);//返回线性表L中数据元素的个数
int ListLength(SqList L);//用e返回L中第i个位置的数据元素的值
Status GetElem(SqList L,int i,ElemType &e);//返回L中第一个与e满足关系compare()的数据元素的位序,
//如果这样的元素不存在,则返回0
int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType));//如果cur_e是L的数据元素,且不是第一个,则用pre_e返回其前驱;
//否则操作失败,pre_e无定义
Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e);//若cur_e是L的数据元素,且不是最后一个,用next_e返回其后继;
//否则操作失败,next_e无定义
Status NextElem(SqList L,ElemType cur_e,ElemType &next_e);//在L中第i个位置之前插入新的数据元素e,L的长度加1
Status ListInsert(SqList &L,int i,ElemType e);//删除L的第i个数据元素,并用e返回其值,L的长度减1
Status ListDelete(SqList &L,int i,ElemType &e);//依次对L的每个数据元素调用函数visit(),
//visit()函数的形参加&,表明可以通过函数visit()改变元素的值
void ListTraverse(SqList L,void(*visit)(ElemType &));

 

顺序表

1.     动态分配存储结构

#define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量
#define LIST_INCREMENT 2 //线性表存储空间的分配增量
typedef struct SqList{ElemType *elem;//存储空间基地址int length;//当前长度int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)

}SqList;

 

 

2.     静态分配存储

#define MaxSize 50  //定义线性表的最大长度为50
typedef struct {ElemType data[MaxSize];//顺序表的元素int length;//顺序表的当前长度
    
}SqList;//顺序表的类型定义

 

注意区分线性表和数组的区别:线性表中的元素位序是从1开始,而数组中的元素下标是从0开始的.

 

动态分配和静态分配的优缺点比较

静态分配的缺点:静态分配时,由于数组的大小和空间事先已经固定,一旦空间已经满了,再加入新的数据将会产生溢出,进而导致程序崩溃.

动态分配优点:而动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间已经满了就可以另外开辟一块更大的存储空间,用来替换原来的存储空间,从而达到扩充存储空间的目的,

而不需要为线性表一次性划分所有空间.

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

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

相关文章

day:14 环境的搭建

一、环境的介绍 (1)测试环境分类; a、开发环境 ,开发 b、测试环境 ,(也叫sit环境 ,uat环境) 测试人员 c、线上环境(也叫生成环境) 运营 (2)测试环境作用: a、用于功能测试 b、寻找bug c、编写测试用例等 (3)环境的结构: lampj=linux+apache+mysql+java 二、搭…

day:14 环境面试题

多有米项目相关面试题 1、请简述多有米环境的搭建、用到了哪些工具和流程介绍 Jdk 1.8以上 服务器 ( tomcat ,apache) 代码包 ( root前端,manage后端) 数据库 mysql 虚拟机 centos 数据包 简单流程:安装jdk---安装服务器---将代码包部署到服务器中…

任务1

实验任务1 源代码 task1_1.c1 //打印一个字符小人2 3 #include <stdio.h>4 int main()5 {6 printf(" O \n");7 printf("<H>\n");8 printf("I I\n");9 printf(" O \n"); 10 printf("<H>\n&…

【Java 开发】在Sublime Text中设置GBK编码格式的步骤

‌Sublime Text,这款广受赞誉的跨平台文本编辑器,在编程、标记撰写以及文学创作等领域均有着广泛的应用。其运行速度迅捷,操作灵活自如,且配备了诸多高级功能,诸如语法高亮、智能自动完成、便捷的代码片段、多选操作、严谨的拼写检查以及强大的宏录制等。此外,Sublime Te…

推荐三本数学方面的书籍《数学要素》、《矩阵力量》和《统计至简》 - 鸢尾花书:从加减乘除到机器学习 - 姜伟生 - PDF免费下载

下载地址:https://pdfs.top/book/鸢尾花书系列:从加减乘除到机器学习.html。《鸢尾花书系列:从加减乘除到机器学习》是姜伟生博士编写的机器学习从入门到精通合集,旨在帮助读者从编程基础到机器学习掌握关键技能。每本书内容简洁,适合不同阶段的学习者,帮助读者快速上手并…

第一次个人编程项目

学号 3123004294Github仓库链接 https://github.com/Berluga/3123004294.git项目 内容这个作业属于哪个课程 软件工程导论这个作业要求在哪里 作业要求文档这个作业的目标 通过实现一个查重系统,综合训练算法设计、工程规范、测试及文档撰写能力PSP 2.1 表格PSP阶段 预估耗时(…

【Java 开发】windows 命令行cmd界面,运行java 程序报错情况分析和解决!

windows cmd 运行java 程序报错了 (编译通过,运行报错)通过 java 和 javac 命令 得知,两个命令的版本不一样。因为这是因为有两个java 版本所导致的。 此时 需修改环境变量的配置。 此时我们找到 path 环境变量的配置 可以看到 配置了两个 JAVA_HOME的变量 一个JAVA_HOME 对…

2025/3/4 - Vue3学习--基础创建教程学习笔记

基于VUE创建:创建流程VScode实例-->编写APP组件

sql(3)多表查询

1.内连接查询(交集)2.外连接左外连接会全显示表一,右外连接会全显示表二,然后都显示交集部分。 3.子查询(嵌套查询) 行子查询表子查询注:给表起别名 select * from tb_emp e,tb_dept d where e.dept_id=d.id;

EndNote 21软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【042】三位数字即可免费获取分享链接,无广告拒绝套路;2、安装教程双击Setup.exe安装,弹窗安装对话框点击Next选择I would like a free ftrial ,点击Next点击Next选择I accept ,点击Next默认Next选择安装路径,建议C盘之外…