数据结构: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;
}
相关推荐
mmmmath_36 小时前
LeetCode.199.二叉树的右视图
数据结构·leetcode
Shaoshing12 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
mmmmath_312 小时前
LeetCode.429.N叉树的层序遍历
数据结构·leetcode
suhan13 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:4.栈的应用(括号匹配,四则运算表达式求值,进制转换,递归)
数据结构·后端·算法
suhan13 小时前
【数据结构】三、栈和队列:2.顺序栈&共享栈(顺序栈的初始化,判空,进栈,出栈,读取栈顶,顺序栈实例)
数据结构·后端·算法
SelectDB14 小时前
部署形态与存算分离速查:形态对照、配置项清单与关键命令片段
大数据·数据结构·数据库
0+11115 小时前
算法 --哈希表
数据结构·算法·散列表