数据结构的定义和简介

本文介绍了数据结构的定义,包括元素与元素关系的概念,以及算法与数据结构的关联。强调了数据结构在软件开发中的核心地位,指出其与内存分配、函数调用、多线程操作和编译原理等的联系。此外,文章详细阐述了数据结构学习的基础,如指针、结构体和动态内存分配,并提供了实例说明。最后提到了指针与函数、数组、结构体的关系,以及动态内存分配和释放的重要性。
摘要由CSDN通过智能技术生成

1. 概述

数据结构定义:

我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(如元素的CURD、排序等)而执行的相应操作,这个相应的操作也叫算法。

数据结构 = 元素 + 元素的关系

算法 = 对数据结构的操作

算法:

算法就是:解决问题的方法和步骤

衡量算法有如下标准:

时间复杂度

程序要执行的次数,并非执行时间

空间复杂度

算法执行过程中大概要占用的最大内存

难易程度(可读性)

健壮性

2. 数据结构的特点和地位

地位:

数据结构处于软件中核心的地位。

如计算机内存中栈和堆的区别,不懂数据结构的人可能会认为内存就是分两大部分,一块叫栈,一块叫堆,显然这是非常肤浅且不正确的结论。

实际上如果一块内存是以压栈出栈的方式分配的内存,那么这块内存就叫栈内存,如果是以堆排序的方式分配的内存,那么这块内存就叫堆内存,其最根本的区别还是其内存分配算法的不同。

例如,函数的调用方式也是通过压栈出栈的方式来调用的,或者操作系统中多线程操作有队列的概念,队列用于保证多线程的操作顺序,这也是数据结构里面的内容、或者计算机编译原理里面有语法树的概念,这实际上就是数据结构里面的树,比如软件工程、数据库之类都有数据结构的影子。

特点:

数据结构修炼的是内功,并不能直接立竿见影的可以解决现实问题,但是有了这门内功会在其他方面的学习中对你大有益处。

预备知识(C语言)

学习数据结构应该具备如下知识:

指针

结构体

动态内存的分配和释放

跨函数使用内存

本小节主要介绍学习数据结构应该有的基础,并对相关知识稍作讲解。

指针

指针是 C语言 的灵魂,重要性不需多言。

指针定义

地址:

地址是内存单元的编号

其编号是从 0 开始的非负整数

范围: 0 – 0xFFFFFFFF (232 - 1) 注:此指x86平台,x64平台下最大内存地址为 (264 - 1)

指针:

指针就是地址,地址就是指针。

指针变量是存放内存单元地址的变量,它内部保存的值是对应的地址,地址就是内存单元的编号(如内存地址值:0xffc0)。

指针的本质是一个操作受限的非负整数

在计算机系统中,CPU 可以直接操作内存,关于 CPU 对内存的操作与控制原理可以简单理解如下图

地址线 : 确定操作哪个地址单元

控制线 : 控制该数据单元的读写属性

数据线 : 传输 CPU 和内存之间的数据

指针的分类

基本类型的指针

int i = 10; // 定义一个 整形变量 i 初始值 10

int *p = i;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值