C++学习(二十九)(C语言部分)之 顺序表
一、数据结构
组织 存放数据的方式
精心选择的数据结构可以提升效率
数据结构 1、逻辑结构
一对多关系 父与子
一对一关系 排队中
多对多关系 两地的路线
2、存储结构
数据存放的位置关系
顺序存储数据 一个挨着一个的存储(数组)
链式存储方式
二、线性表
逻辑方面是线性关系 一对一线性 每一个元素有唯一的前驱和后继
顺序存储的线性表 就是顺序表
链式存储的线性表 就是链表
三、顺序表
主要实现方式---->数组/动态数组
顺序存储的线型表
数据结构--->为了管理数据
对数据进行操作--->增加 删除 查找 修改
附:
静态数组(定义的大小固定)
数组已满 就不能存放数据
动态数组
数组满 --->分配新的内存(申请更大的空间存储数据)
实现 用malloc申请内存
测试代码笔记如下:
#include<stdio.h>
struct LIST //定义结构体
{
int arr[]; //存放数据的数组
int size; //数组中最多能够存多少元素
int len; //数组中已经存了多少元素
}; //初始化函数
void main(struct LIST*p)
{
//刚开始表中没有数据
p->len = ;
p->size = ; //最多可以存的数据
} //增加数据
void insert(struct LIST*p,int data)
{
//直接插入末尾
if (p->len < p->size) //说明顺序表没有满
{
p->arr[p->len] = data; //根据数组的下标判断 len知道的是最后一个元素的下一个位置
p->len++;
//两行等价于p->arr[p->len++]=data;
}
} //插入到中间 插入到前面
void instert_middle(struct LIST*p, int data, int index) //index是下标 插入到下标所在位置
{
if (p->len < p->size) //说明顺序表没有满
{
if (index >= && index < p->len)
{
//可以先插入到这个位置
//先腾出一个位置
for (int i = p->len; i>index; --i)
{
p->arr[i] = p->arr[i - ]; //元素往后移动
}
p->arr[index] = data; //插入到这个位置
p->len++; //插入了一个元素 所以让它加1
}
else
{
p->arr[p->len++] = data; //否则插入尾部
}
}
} //查找 一个一个找
int search(struct LIST*p, int data)
{
for (int i = ; i < p->len; ++i)
{
if (data == p->arr[i])
{
return i; //找到了return下标
}
}
return -; //不存在这个位置
} //修改数据
void change(struct LIST*p,int data,int newData)
{
//根据学生的名字查找
for (int i = ; i < p->len; ++i)
{
if (data == p->arr[i]); //找到了就修改
{
p->arr[i] = newData; //学生名字 字符数组 比较用什么 strcmp string.h
break; //如果有多个相同数据都要修改 去掉break
}
}
} //删除数据 删除就是覆盖 循环
void dele(struct LIST*p, int data)
{
for (int i = ; i < p -> len; ++i)
{
if (data == p->arr[i]) //找到位置 开始删除
{
for (int j = i; j < p->len-; ++j) //从前往后
{
p->arr[j] = p->arr[j + ];
}
p->len--;
break;
}
}
} int main()
{
#if 0
int x, y, z;
int k;
printf("%p,%p,%p,%p", &x, &y, &z, &k);
#endif #if 1
/*
示例:
存放同学的信息 学号+姓名
一个班级100个同学 +插班生 +转班生
150--70
字符数组 字符串
char arr[100]="hello world";//数组大小 数组有效元素11个字符
\0 前面是有效数据 后面是无效数据 这个只限于字符数组
顺序表中 1.有多少个数据 2.可以放多少个数据
int brr[100]={1,2,34};
//有3个数据 最多可以放100个数据 默认不考虑数据重复问题
*/
struct LIST list; //定义一个顺序表
init(&list); //调用函数初始化
insert(&list, );
instert_middle(&list, , ); //插入的数据是3 插到下标为4的位置
#endif
getchar();
return ;
}
2019-03-30 09:17:07
C++学习(二十九)(C语言部分)之 顺序表的更多相关文章
- 前端学习(二十九)nodejs(笔记)
后台语言 java php .Net python Node.js------------------------------------------------- ...
- ElasticSearch7.3学习(二十九)----聚合实战之使用Java api实现电视案例
一.数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期字段 PUT /tvs PUT /tvs/_mapping { "properties": { "price& ...
- Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析
现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <depende ...
- ballerina 学习二十九 数据库操作
ballerina 数据操作也是比较方便的,官方也我们提供了数据操作的抽象,但是我们还是依赖数据库驱动的. 数据库驱动还是jdbc模式的 项目准备 项目结构 ├── mysql_demo │ ├── ...
- python学习 (二十九) range函数
1:list函数可以将其他类型转成list. print(list(range(0, 10))) 2: list函数把元组转成list t = (1, 3, 3, 5) print(list(t)) ...
- 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描
kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...
- Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/data_ui_api https ...
- Bootstrap <基础二十九>面板(Panels)
Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
随机推荐
- jquery 共用函数
ready()方法 $(doxument).ready(fucntion(){ }) $().ready(function(){ }) $(function(){ }) 当文档加载后激活函数: ...
- webpack分离打包css和less
github仓库:https://github.com/llcMite/webpack.git 为什么要分离打包? 答:刚开始学webpack的时候就很郁闷,明明没几个文件,打包出来体积特 ...
- JavaScript -基础- 函数与对象(二)String
一.判断数据类型typeof与判断对象类型instanceof 1.typeof typeof只能判断基础数据类型,无法判断引用数据类型 <script> var s="hell ...
- 顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 学react的第一天
属性 class = className for = htmlFrom jsx语法被编译了,所以可以在return里写html标签 react的属性 constructor(props){ super ...
- MFC Release版本串口连不上的问题
项目开发过程中发现Release版本存在连接串口时,第一次开机后,出现连接不上的问题,但在Debug版本下正常:而且只要连接上一次,Release版本就能正常连接: 解决方案: 在串口配置过程中更改为 ...
- session和cokkie的区别与作用
session在计算机中,尤其是在网络应用中,称为“会话机制”,Session对象存储特定用户会话所需的属性及配置信息,这样,当用户在应用程序的web页之间跳转时,存储在session对象中的变量将不 ...
- html 相对路径 问题
在jsp跳转servlet和servlet跳转jsp过程中,因为servlet和jsp在不同的目录下,所以直接跳转失败.下面是查阅网上的资料,简单的总结下相对路径的问题. 这种情况下index.jsp ...
- HTTP网页过程
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1) 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立 ...
- final视频
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476] 视频链接[https://v.youku.com/v_show/id_ ...