博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构初步归纳(一)概念、线性表以及队列和栈
阅读量:5060 次
发布时间:2019-06-12

本文共 838 字,大约阅读时间需要 2 分钟。

    数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

    使用计算机处理一个生活中的具体问题需要经过以下步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解决此模型的算法,最后编出程序,进行测试、调整直至得到最终解答。数值计算问题的数学模型为数学方程加以结局,但非数值计算问题的则是表、树图之类的数据结构。
    数据结构中的数据元素关系有顺序映像和非顺序映像两种。对应存储形式为顺序存储和链式存储。具体表现形式为数组和指针链表。

     算法的事前分析估算有时间复杂度和空间复杂度两种。空间复杂度包括计算程序本身存储需要的存储空间,对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。时间复杂度为算法中基本操作重复执行的次数。

     分析程序的时间复杂度,首先要分析程序所研究问题的基本操作,通常为最深层循环内的语句中的原操作(固有数据类型的操作)例如阶乘程序的基本操作是乘法;然后分析此基本操作的执行次数,执行次数一般为循环次数n,求出n的增长率或阶数。

     线性表根据存储方式分为顺序表和链表。

     顺序表即为数组,优点是可以随机存取表中任一数据元素;缺点为在插入删除时需要移动大量元素。链表则相反,例如多项式相加。还有双向链表和循环链表这样的特殊链表。

    栈和队列由于不需要中间插入和删除,所以大多采用顺序存储。

    栈后进先出,只在栈顶作插入、删除操作,即push()和pop()操作,常见应用为数制转换、迷宫等。递归函数也是栈的一种。递归函数的定义通常为
F(n){
   if(n==0) return f0;
   else return F(n-1);

}

f0,F(n)不一定为数值,更多的是具体操作。使用递归函数最重要的是将具体问题转化为数学模型的能力。   
    队列先进先出,一端插入,另一端删除。还有双端队列、链队列和循环队列的特殊形式。

 

转载于:https://www.cnblogs.com/dengquan/p/8514463.html

你可能感兴趣的文章
JS模块化库seajs体验
查看>>
Android内核sysfs中switch类使用实例
查看>>
POJ2288 Islands and Bridges(TSP:状压DP)
查看>>
POJ3250 Bad Hair Day(单调栈)
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
IOS开发UI篇--UITableView的自定义布局==xib布局
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
查看>>
struts2中<s:form>的应用
查看>>
QML学习笔记之一
查看>>
7NiuYun云存储UploadPicture
查看>>
Window 的引导过程
查看>>
python与 Ajax跨域请求
查看>>
Java实体书写规范
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
六、PowerDesigner 正向工程 和 逆向工程 说明
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>