读谭浩强C语言数据结构有感(1)
1.什么是数据结构?
数据结构,就是我们计算机内部的运算,编程语言的基础工作模式吧,个人总结的 = = !!
数据:说简单一点,就是计算机二进制机器码,然后通过一些复杂的操作,变为复杂的语言。
数据元素:数据有集合和元素的区别,集合里的个体就是数据元素,相对应的就是数据结构。
线性表:
说简单一点,就是线性存储结构,每个表中有大量的元素,这些元素在物理位置中都是连接起来的。
这些元素有直接前驱和直接后继。线性表的位置是相邻的。
比如,位置1,位置2,位置3.。。。。。位置N。
还有一点,线性表的数据不管有多么大,都是固定的,也就是说有一个终点。
线性表的缺点:插入删除的时候,需要移动大量的元素。
比如插入删除元素后,会移动插入或者删除后面的所有元素,从而造成时间复杂度的线性增加。
链式存储结构:
每一个节点有一个指针域和数据域,其中指针域指向的是这个元素的下一个后继,这样的往复循环
就可以形成一个链表,当然,这和链式存储结构也有不同的地方,最大的不同就是他们的“地址”是不同的。
链式存储结构是依靠指针来判断他的下一个元素的具体位置的,而线性表,则是根据地址的物理位置来判断的。
打个最简单的比方,一个游戏,如果我想要去一个很远的地图。有2种方式:第一种,直接走路去,
那么我就会经过这个地图的所有区域,直到到达这个地图,还有一种方式就是用CASH,商城里的,
然后直接点那个地图,可以瞬间移动到我需要的地方。
2种方式的优缺点很显而易见了,如果是采用链式结构的话,不论隔了多么远,我也只要轻轻鼠标一点,
就可以到了,删除插入元素也是如此,如果插入或者删除元素的话,采用线性表的话,会移动和这个元素相关的元素的位置。如果是链式存储结构的话,我只要把这个元素插入或者删除,然后把以前元素的NEXT指向新插入的元素的NEXT,然后把这个新插入的元素赋给这个元素前的那个元素的指针就OK了。
链表有一个指针域,指针指向的链表中的下一个元素。那么我们该怎么插入元素呢,在链表中。
首先我们要想到,插入的元素是不是链表的头部,或者是在链表的尾部。或者在链表的中间,
或者在A元素的前面或者后面。现在讨论一下中间部分插入元素的方法。
首先让s->next=p->next 这句话的意思就是,把链表P的指向下一个元素的指针赋给s的指向下一个元素的指针。
这样 s->next就变成了p->next,由于是在链表中间插入的,所以自然s->next就指向了链表中的下一个元素。
p->next=s,这句话的意思:就是把s这个指针的值,让p->next指向s,从而前后2方面都融入了链表,从而使得成为了链表的一部分,这就是插入法。
读谭浩强C语言数据结构有感(1)的更多相关文章
- NEUQ1051: 谭浩强C语言(第三版)习题6.7
//C代码简直难看到家,求大神知道如何写出复用性好的,维护性强的代码... //格式错误了好几次,最后发现是are和数字之间多了个空格......本来一直以为是最后的换行多了,费劲搞掉了. #incl ...
- NEUQ1055谭浩强C语言(第三版)习题6.11
//迭代公式不是很理解,写出来算了.. #include <stdio.h> #include <math.h> int main() { double x0,x1; int ...
- NEUQ1038: 谭浩强C语言(第三版)习题4.8
之前没做对的一道题,今天集中清理一下. //------------------- 很水的题,主要是 %.2lf 不能四舍五入,需要仅保留两位小数,用了丑陋的强制类型转换... //--------- ...
- 谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)
#include<stdio.h> #include<stdlib.h> #define N sizeof(link) typedef struct stu { struct ...
- C语言学习笔记---谭浩强
前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别.所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西.然而数 ...
- 再论谭浩强《C语言程序设计》
一些同学学不好C语言,把罪责归于“因为教材是谭浩强写的”实在是很滑稽. 谭浩强老先生 1934 年生,现在已经 80 岁了.他 1958 年从清华大学自动控制系毕业,那年 24 岁.要知道 C 语言那 ...
- 从谭浩强的《C语言程序设计》到《电容应用分析精粹》
不记得具体从什么时候开始(反正很多年前的事了)的,不少人都陆续批评过谭浩强的<C语言程序设计>,各方面都有扒过.例如,与实践脱节,很多例子在不同编译器上运行是错误的,代码风格糟糕等等方面. ...
- C程序设计(谭浩强)第五版课后题答案 第一章
大家好,这篇文章分享了C程序设计(谭浩强)第五版课后题答案,所有程序已经测试能够正常运行,如果小伙伴发现有错误的的地方,欢迎留言告诉我,我会及时改正!感谢大家的观看!!! 1.什么是程序?什么是程序设 ...
- 挂羊头卖狗肉蓄意欺骗读者——谭浩强《C程序设计(第四版)》中所谓的“按照C99”(二)
挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看 ...
随机推荐
- 【转】博弈—SG函数
转自:http://chensmiles.blog.163.com/blog/static/12146399120104644141326/ http://blog.csdn.net/xiaofeng ...
- 一台linux真实机实现多台Tomcat服务
一.事前准备 ü 确保linux并未安装tomcat (这里虚拟机测试) ü 下载jdk与tomcat ① jdk-6u18-ea-bin-b01-linux-i586-20_aug_2009.bin ...
- cxf3.1.4所需jar,大部分都可以从cxf3.1.4的lib包下找到
asm-.jar commons-beanutils-.jar commons-collections-.jar commons-lang-2.6.jar cxf-core-.jar cxf-rt-b ...
- JsonUtil
package com.test.base.util.json; import java.beans.IntrospectionException; import java.beans.Introsp ...
- asp.net 基礎部分一
过程: 客户端像服务器发送一个请求,iis服务器接收到请求的数据,并且将数据交给c#程序进行处理,并且对数据库进行操作,并且将处理到的结果响应给浏览器客户端 过程2:第一次浏览器请求,后端应该发一个表 ...
- 第一章-第十五题(谈谈你对压力的看法,以及怎么和别人合作, 帮助别人,把压力转化为动力,在互相帮助的环境中成长。)--By林培文
压力是一把双刃剑,有害也有利,重点是如何看待压力,从而做到趋利避害,化压力为动力.对于当前的我来说,压力利大于弊.形成这一想法,我经历了好几个阶段.第一个阶段是小学时代,那会整天就知道玩,也没什么压力 ...
- 通过js实现回到顶部功能
许多商城网址,当我们滚动到一定高度时,我们会发现一般会出现一个回到顶部的js选项,点击轻松实现回到顶部,交互效果会显得比较人性化,且回到顶部过程中若在滚动滚动条时可以停止滚动,现在让我们来实现吧 我总 ...
- Quartz 2D在ios中的使用简述一:坐标体系
Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境,官方文档:Quartz 2D Programming Guide. 一.坐标体系 这样的坐标体系就导致我们使用Quart ...
- Android内存泄漏分享
内容概述 内存泄漏和内存管理相关基础. Android中的内存使用. 内存分析工具和实践. 以下内容不考虑非引用类型的数据,或者将其等同为对应的引用类型看待--一切皆对象. 内存泄漏概念 不再使用的对 ...
- 使用 OWIN Self-Host ASP.NET Web API 2
Open Web Interface for .NET (OWIN)在Web服务器和Web应用程序之间建立一个抽象层.OWIN将网页应用程序从网页服务器分离出来,然后将应用程序托管于OWIN的程序而离 ...