一、数据结构
组织 存放数据的方式
精心选择的数据结构可以提升效率
数据结构 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语言部分)之 顺序表的更多相关文章

  1. 前端学习(二十九)nodejs(笔记)

    后台语言    java     php     .Net     python    Node.js------------------------------------------------- ...

  2. ElasticSearch7.3学习(二十九)----聚合实战之使用Java api实现电视案例

    一.数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期字段 PUT /tvs PUT /tvs/_mapping { "properties": { "price& ...

  3. Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析

    现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <depende ...

  4. ballerina 学习二十九 数据库操作

    ballerina 数据操作也是比较方便的,官方也我们提供了数据操作的抽象,但是我们还是依赖数据库驱动的. 数据库驱动还是jdbc模式的 项目准备 项目结构 ├── mysql_demo │ ├── ...

  5. python学习 (二十九) range函数

    1:list函数可以将其他类型转成list. print(list(range(0, 10))) 2: list函数把元组转成list t = (1, 3, 3, 5) print(list(t)) ...

  6. 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描

    kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...

  7. Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/data_ui_api https ...

  8. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  9. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  10. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

随机推荐

  1. 函数后面跟throw

    1.函数后面跟throw(),表示该函数不会抛出异常 2.函数后面跟throw(...),表示该函数可能会抛出任何形式的异常 3.函数后面跟throw(int),表示该函数只抛出int类型的异常

  2. sql2008r2安装失败的解决办法

    setup fails with: '.', hexadecimal value 0x00, is an invalid character.SQL 2012 Setup issues - hexad ...

  3. 银联接口C#

    银联支付: ChinaPay的会员商户接入支付平台,以方便商户开展网上支付交易. 持卡人从商户网站中生成订单信息,通过公共支付交易平台中的支付网关子系统进行支付的过程,其交易流程包括订单确认.支付处理 ...

  4. java中JDBC连接数据库操作的基本步骤

    JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...

  5. zookeeper集群环境搭建(使用kafka的zookeeper搭建zk集群)

    ---恢复内容开始--- 使用kafka的zookeeper来搞集群的话和单纯用zk的其实差不了多少. 0.说在前头,搭建kafka集群之前请把每个服务器的jdk搞起来. 1.安装kafka wget ...

  6. CSS--margin塌陷

    margin塌陷 解决方法: 1.给父级顶加上一条线,不太合适. 2.bfc block format context 设定bfc后,特定的盒子会遵循另一套语法规则,解决了margin塌陷 触发bfc ...

  7. CSS(二)属性--文本设置

    HTML代码一 <body> <div>这是一个很黑很黑的夜晚,黑云密布,没有任何光亮透过.卖火柴的小姑娘.......</div> </body> C ...

  8. JDBC:随机生成车牌号,批量插入数据库

    package InsertTest; /* * 单客户端:批量插入 */ import java.sql.Connection; import java.sql.DriverManager; imp ...

  9. python操作Excel读写(使用xlrd和xlrt)

    包下载地址:https://pypi.python.org/pypi/xlrd   导入 import xlrd 打开excel data = xlrd.open_workbook('demo.xls ...

  10. node连接myslq

    var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : ' ...