数据结构:1.概念及顺序表

数据结构的学习,主要是练习代码

目录

一、概念

1.概念

2.程序的效率的衡量指标

3.数据结构

4.存储结构

二、顺序表


一、概念

1.概念

  • 程序 == 数据结构 + 算法
  • 数据结构:程序操作数据对象的结构
  • 算法:程序操作数据对象的方法

3.优点

  • 合适的数据结构可以极大提升程序运行效率(时间)和内存使用(空间)。
  • 帮助程序员更抽象地思考问题,聚焦于逻辑而非细节。
  • 数据结构是学习算法、操作系统、数据库、编译原理等高级课程的基础。

2.程序的效率的衡量指标

  • 时间复杂度(函数):数据量增长与程序运行时间增长呈现的比例函数关系
    • o(c)、o(logn)、o(n)、o(nlogn)、o(n^2)、o(n^3)......o(2^n)
  • 空间复杂度(函数):数据量增长与程序空间增长呈现的比例函数关系

3.数据结构

1).逻辑结构

  • 线性结构:一对一关系
  • 树形结构:一对多关系
  • 图形结构:多对多关系

2).存储结构

  • 顺序存储
    • 访问元素方便
    • 插入、删除效率低
    • 无法利用小空间
  • 链式存储:
    • 插入、删除效率高
    • 可以利用小空间
    • 访问元素不方便
  • 增加额外空间开销
  • 索引存储
  • 散列存储

4.重点

  • 顺序表
  • 链式表
  • 顺序栈
  • 链式栈
  • 顺序队列
  • 链式队列
  • 二叉树(完全二叉树,满二叉树)
  • 哈希表
  • 常见的排序和查找算法

二、顺序表

  • 核心定义

    • 物理结构:内存地址连续

    • 逻辑结构:线性排列

    • 访问方式:通过下标/索引直接访问

  • 本质等同于数组,通过申请堆区空间存储数据,通过首地址完成对所有控件访问

  • 头文件

seqlish.h

cs 复制代码
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
typedef int DataType;
extern DataType *CreateSeqlist(int len);
extern void DestorySeqlist(DataType **pparray);
#endif
  • 代码

seqlish.c

cs 复制代码
#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h"
DataType *CreateSeqlist(int len)
{
    DataType *pret = NULL;
    pret = malloc(len * sizeof(DataType));
if (NULL == pret)
{
    perror("fail to malloc");
    return NULL;
}
    return pret;
}
void DestorySeqlist(DataType **pparray)
{
    free(*pparray);
    *pparray = NULL;
    return;
}
相关推荐
会编程的土豆19 小时前
【leetcode hot 100】二叉树二叉树
数据结构·算法·leetcode
一直都在57219 小时前
B树和B+树详解
数据结构·b树
墨神谕20 小时前
希尔排序详解
数据结构·算法·排序算法
半瓶榴莲奶^_^20 小时前
优先级队列(堆)
java·数据结构·算法
小樱花的樱花20 小时前
C++引用:高效编程的技巧
开发语言·数据结构·c++·算法
Boop_wu20 小时前
[Java 算法] 归并排序
数据结构·算法·排序算法
今儿敲了吗20 小时前
49| 枚举排列
数据结构·c++·笔记·学习·算法
ChoSeitaku20 小时前
NO.2|数据结构设计|日志封装|DeepSeel接入封装|全量返回实现测试|SSE|流式响应实现测试
java·jvm·数据结构
We་ct20 小时前
LeetCode 67. 二进制求和:详细题解+代码拆解
前端·数据结构·算法·leetcode·typescript
yuanyuan2o220 小时前
你可能需要的算法思想——动态规划
数据结构·python·算法·动态规划