一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: sunny20
收起左侧

[STM8/STM32] 基于VC++6.0的链表实验(稍作修改可以直接移植到单片机)

[复制链接]
发表于 2016-2-11 03:06 来自手机 | 显示全部楼层
sunny20 发表于 2016-2-11 00:09
那请这位朋友用数组组成一个数据,里面有浮点数,整型,指针,函数入口地址,要求只能用数组,不可以是结 ...

用了结构体就等于用了链表了?
 楼主| 发表于 2016-2-11 08:43 | 显示全部楼层
chjj0 发表于 2016-2-11 03:06
用了结构体就等于用了链表了?

没错,如果你用了结构体数组,其实就是链表的一种了,这样吧,算不是,那么,当你用结构体数组的时候,请你将结构体数组第3个元素删除,重新插入一个新的数据,你写个给我看看!
 楼主| 发表于 2016-2-11 08:46 | 显示全部楼层
sunny20 发表于 2016-2-11 08:43
没错,如果你用了结构体数组,其实就是链表的一种了,这样吧,算不是,那么,当你用结构体数组的时候,请 ...

插入和删除不可以是同一个位置
发表于 2016-2-11 09:29 | 显示全部楼层
sunny20 发表于 2016-2-11 00:03
这位朋友,请你用数组建立一个菜单,要求这个菜单里面有标题,有页面数据,有帮助信息,注意!还是多级的 ...

唉,大过年的,我也不想争,此帖不再回。您继续再花几个月时间好好精研一下链表吧,您对C的数据理解还都是在教科书层面的。
首先,如同上面朋友说的,用结构体不等于就是链表,建链表也不一定非要用结构体,在数据操作上,完全不需要定义结构体,当需要建立一个双向链表结点时,假如需要一个16位编号(2Byte)、一个16位数据(2Byte)、2个16位指针(4byte),那只要直接malloc申请8个字节的空间就行,使用时按地址从低到高,直接每次访问连续的2byte,数据的存、取都一样一样的。内存的使用,教科书上不是这样讲的,但编译器实际上就是这样作的,您别守着《数据结构》教科书就当是金科玉律了,《数据结构》教科书上是用“伪操作”语言方便教学描述,当您再学完《编译原理》,就知道,底层的实现就是我上面说的那样,结构,在您看来就是链表必须的,实际上只是为了方便用户理解和规范定义,底层的使用,无非就是地址->内容,万变不离其宗。


其次,您说的这些个要求:动态标题、动态页面数据、帮助信息,不就是做个动态菜单嘛,有神马复杂的?如果纯粹从教科书上讲,理论上要面对“无限”的菜单项,那似乎必须是全部用链表,因为有“无限”项,实际中,菜单项总是“有限”的,比如不超过100项(实际单片机项目中,远远达不到这样复杂程度,实际一般不超过20项),那我就只要申请100个元素的指针数组,每个指向一个菜单的,然后菜单项内的数据结构,完全可以自定,只要编程者心中清楚就成。如果实际的菜单项不到50项,那就只需要定义50个元素的数组,浪费的,最多不超过50个word的空间,但指令开销比使用链表,要低至少10倍。

发表于 2016-2-11 10:14 | 显示全部楼层
楼主技术是不错,就是说话有点冲..

你说结构体是链表的组成部分, 但结构体不是链表的子集.
坛友说不用链表,但不能让人家不用结构体吧.

本菜鸟也没用过结构体....
 楼主| 发表于 2016-2-11 10:15 | 显示全部楼层
fat32 发表于 2016-2-11 09:29
唉,大过年的,我也不想争,此帖不再回。您继续再花几个月时间好好精研一下链表吧,您对C的数据理解还都 ...

那拜托这位朋友去看看UCOS吧,里面用的全部都是链表,不用链表做得出来吗?再去看看windows的消息队列吧,全部是结构体链表!跟你争浪费我时间,还有啊,很多朋友说链表浪费单片机内存,我觉得一点都不,我做了一个,也就话了几十个字节,在现在增强型51的天下,几十个字节根本不算什么,况且我用的是ARM
发表于 2016-2-11 11:21 | 显示全部楼层
sunny20 发表于 2016-2-10 23:57
你说这句话再次表明你是一个菜鸟,首先,我叫你一定要用链表吗?其次,我说我用链表一定是简单复杂化吗? ...

问题是, 我一直都在强调我就是个菜鸟啊?!好赖话都听不来,唉,我也是醉了。。。
发表于 2016-2-11 11:27 | 显示全部楼层
junyee 发表于 2016-2-11 10:14
楼主技术是不错,就是说话有点冲..

你说结构体是链表的组成部分, 但结构体不是链表的子集.

早发现了,他这人说话就这样,很浮躁,本来好心帮他说话夸他厉害,居然被反被他说幼稚+草鸟,我也是醉了。。。
 楼主| 发表于 2016-2-11 12:23 | 显示全部楼层
40560335 发表于 2016-2-11 11:27
早发现了,他这人说话就这样,很浮躁,本来好心帮他说话夸他厉害,居然被反被他说幼稚+草鸟,我也是醉了 ...

我浮躁吗?我淡定得很,我发东西是分享给大家共同进步的,不是被人用来诋毁的,对于诋毁我的人,一律毫不客气!
发表于 2016-2-11 14:41 | 显示全部楼层
结构体不是链表,这是很明确的。
链表的主要特征在于,他在内存中的分布是不连续的(这也是链表跟数组的最大不同,数组是连续的),结构体只是链表实现的一个方式。就如楼上所说,链表完全可以不用结构体来实现。
结构体就是多个数据的一种封装形式,数组是把数据顺序存放,链表则可能是不连续的。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-20 21:00 , Processed in 0.048165 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表