C 语言基础 15 数据结构

来源:互联网 发布:厦门大学网络教育收费 编辑:程序博客网 时间:2024/06/08 16:00
数据结构研究怎么使用存储区
算法研究解决一些常见问题的通用方法

可以从两个完全不同的角度描述数字之间的关系
逻辑关系(逻辑结构)描述的是数字之间与计算机无关的关系
物理关系(物理结构)描述的是记录数字的存储区之间的关系

逻辑结构分成如下几种
1.集合结构:所有数字可以看作是一个整体
2.线性结构:可以用一条有顺序的线把所有数字连起来
3.树状结构:所有数据都是从一个数据向一个方向扩展出来的,任何数据可以扩展出多个其他数据
4.网状结构:任何两个数据之间都可以有直接的联系,不同数据之间的联系没有统一的方向

物理结构有如下两种
1.顺序结构:所有存储区在内存里连续排列数组和动态分配内存都是顺序结构的例子,顺序结构中每个存储区有一个编号。顺序结构里可以直接根据编号找到对应的存储区,这叫做随机访问能力,顺序物理结构很难调整大小,容易造成内存浪费。顺序物理结构不适合进行插入或删除数字的操作

2.链式结构:由多个相互独立的存储区构成,任何两个存储区之间可以采用指针连接
链式物理结构中每个存储区都是结构体类型存储区,它们叫做节点。单向线性链式物理结构中任何两个节点之间都有前后顺序(每个节点里只需要包含一个指针)单向线性链式物理结构中最后一个节点里的指针,必须是空指针

链式物理结构不支持随机访问能力。

可以在单向线性链式物理结构第一个节点前加一个无效节点,这个节点叫做头节点

可以在单向线性链式物理结构最后一个节点后加一个无效节点,这个节点叫做尾节点


数据结构由一组存储区和相关函数构成,这些函数提供了这些存储区的使用方法,只有这些函数才能直接使用这些存储区

栈是一种数据结构
栈可以用来存放数字,栈里的数字有前后顺序。先放进去的数字在前,后放进去的数字在后。
从栈里获得的永远是最后一个放进去的数字这种使用方法叫做后进先出
实现栈的时候需要提供一个函数用来向栈里放数字,这个函数的名字通常叫push
实现栈的时候也需要提供另外一个函数用来从栈里拿出数字,这个函数的名字通常叫pop

队列也是一种数据结构
队列也可以用来存放数字,这些数字之间也有顺序(先进入的数字在前后进入的数字在后)
每次从队列里获得数字的时候永远得到的是最先放进去的数字这个规则叫先进先出
队列实现里也需要包含一个用来向队列里放数字的函数,这个函数的名称通常也叫push
队列实现里也需要包含一个用来从队列里获得数字的函数,这个函数的名称通常也叫pop

链表也是一种数据结构,它提供了对线性链式物理结构的管理功能

链表可以把使用数据的代码和管理线性链式物理结构的代码分隔开

链表的功能主要包括插入,删除,查找和遍历




原创粉丝点击