这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 关于大家平时说的“数据结构”的困惑

共2条 1/1 1 跳转至

关于大家平时说的“数据结构”的困惑

院士
2006-09-17 18:14:16     打赏
关于大家平时说的“数据结构”的困惑



关键词: 关于     大家     平时     说的     数据结构     困惑    

院士
2006-12-22 22:43:00     打赏
2楼
问 同行里面,经常嘴上挂着“数据结构”,什么要了解“数据结构”啦,
预备知识要“数据结构”啦。很多书上也写道,这个“数据结构”如下之类。
某某说:“数据结构”很重要。。。等等

在此有点含糊,这些提到的“数据结构”到底指什么?

(1)对计算机行业,有课程是《数据结构》,譬如里有树啦、叉啦、队列之类一些算法,侧重的是“算法”。
(2)对电子信息行业来说,(我)没有《数据结构》课程。学的一般是C、C++,提及的是“结构体”,“链表”,堆栈也有。这里结构体和链表通常可做出很多“数据结构”,这里侧重的是“结构”(数据关系的表达形态)。

ARM领域,目前,电子信息专业(含通信领域)、计算机专业同行为主,当然其他专业如工控等等也比较多,那么在你们的观点中,“数据结构”指啥?《数据结构》课程里面提及的结构、算法,还是侧重于“结构”的数据表达形态?

ps:我是电子信息专业。



1: 名字不重要吧,能设计出产品就是好菜~~~~~~~~~ 2: 数据结构到底学什么学算法~~~~~~可是好象没怎么用到啊
那些什么树 图 表 排序什么的学了用来干什么~~~单片机没用到
我们老师干脆说学这个是训练我门逻辑思维~~~~
而且我门sb老师讲的还没有我自学效果好~~~~~~~
所以现在学这个很迷茫
00你给点意见啊 3: re:楼上也提到了

没听说过,那位在单片机ARM上应用"树 图 表" ,这些用结构体、链表完全可设计。感觉计算机PC软件才用得多,譬如搜索软件等。

00,我的意思不是肯概念,而是侧重应用上的说法所包含的内涵。呵呵。
也曾经看过一下《数据结构》这书,但里面的树啊叉啊算法很少用到,对我作单片机ARM来说。 4: 能用到时,自然就用上了。我也不知道它能用在哪,因为我对概念不清楚,只知道遇到问题时,想办法解决。。。

5: 书到用时方恨少 6: "树 图 表"还是经常要用到的在MCU上,自觉不自觉的你就用到了不少"树 图 表",特别是‘树’和‘表’这两种方式。


这几点主要体现在软件结构上,你也许着眼到一些太具体的事件上,所以没怎么感觉到这几个概念的作用。


呵呵,这几个东西内容太广,估计要请21IC的几个宗师级人物来给你讲讲才能清楚了……


我先占个位置听课……


好长时间没听‘所长高论’了,好象不怎么‘冒泡’了……

21ICBBS的一大损失…… 7: 单片机工程师没必要刻意去学 8: 学是可以的,学会用就行了。能用在哪,就需要你自己去判断了。 9: 呵呵,数据结构大家一直在用比如说,数组和指针,可以看作链表
数据结构里的排序算法,或找出一组数据的最大(最小)值,在mcu控制算法里经常用到。
mcu的汉字输入法,也用到很多数据结构的知识
在模糊控制里,不但用到数据结构,还用到很多《软件算法》里的知识
手写手机里的计算式识别,不但用到《数据结构》的知识,而且用到《编译原理》的知识。其中手写体识别,还用到《人工智能》的很多知识。

当然,不学数据结构,也可以用mcu,不过,学了以后,你会发现,很多原来“复杂”的东西,用了数据结构后,变得简单了.....
  10: 受教了 11: 个人意见:譬如电子词典词库编码解码,一般有用到哈夫曼编码,就是叉树结构。
不过一般情况下,用“数据关系形态”来表达亦可,那些无非也是
指针、链表、结构体结构。

作为电子出身的工程师,能懂《数据结构》当然是好事,但也没必要刻意
去专门研究,毕竟精力有限啊,一个嵌入式Linux都搞到天昏地暗了,
正所谓刀锋要放到点子上,心在哪里财富就在哪里。

又或者用到再看,未尝不是一件办法。呵呵 12: 有一本书,《单片机程序设计基础》(修订版),周航慈  本书是《单片机应用程序设计技术》(修订版)一书的姐妹篇。《单片机应用程序设计技术》的内容以程序设计的经验和技巧为主,而本书内容则以程序设计的基本算法为主,目的在于全面提高单片机程序设计者的软件素质。基本内容包括:单片机常用的线性数据结构和相关算法、排序和查找算法、树和图在单片机中的实现、常用的数据处理算法及常用编码方法等。从单片机系统的实际硬件环境出发,语言通俗易懂,使读者轻松地将单片机程序设计基本算法学到手。为加强学习效果和增加实用价值,本书配套了上机学习光盘,在光盘中还提供了最新修订的子程序库和相关调试工具软件,以及众多单片机资料。
  本书可作为电子技术人员自学单片机程序设计基本算法的教材,也可供高等院校电子技术类专业本科生和研究生参考。
13: 要搞嵌入式,她应该不可少,不难的,很有味道 14: 数据结构是好东西...我的理解不仅仅是书本上讲的那些树啊,叉啊的,图啊的,重要的是学习怎么样用数据去表示你要解决的东西,就是用数据组织成一个你要解决问题的模型.这个很重要,可能大家都知道用表格存放数码管字符编码,但很少用表格去存放不同的算法.
#define DOWN   0
#define UP     1
#define ALWAYS 2
void KeyProcess(int m)
{
switch(m)
{
case DOWN:down();break;
case UP:  up()  ;break;
case ALWAYS:always();break;
default:;
}
}
上面的算法可以用函数指针
typedef void (*pfun)(void);
pfun Fun[] = {down,up,always};
void KeyProccess(int m)
{
   pfun function = Fun[m];
   function();
}
各位看到了嘛,用了函数指针有什么好处不言自明了,这就是用了表数据结构,
虽然很简单,但不定每个人都能想到这么用,特别对与初学者.
下面是一老外在AVR上写的MP3程序的一部分,请欣赏:
// Here are the function prototypes for the menu functions
void NULLfunction (void);
void ChangeDir (void);
void DisplayNumDirFiles (void);
void OutputLevel (void);
void LearnRemoteControl(void);

// Structure type - this is the definition of a single menu entry
typedef void (*FnPtr)(void);            // define a function pointer type of: void functionname(void)

typedef struct M_STRUCT
{
    struct  M_STRUCT    *next;          // point to next menu structure
    struct  M_STRUCT    *prev;          // point to previous menu structure
    char    *name;                      // point to display name of menu item
    FnPtr   function;
} MENU_STRUCT;

// Here are the actual menu entries, one per line. They are stored in flash. (Array of structures)
MENU_STRUCT m_array[] PROGMEM = {
    { &m_array[1],    &m_array[4],  (char*)&Menu0Name[0],   NULLfunction },
    { &m_array[2],    &m_array[0],  (char*)&Menu1Name[0],   ChangeDir },
    { &m_array[3],    &m_array[1],  (char*)&Menu2Name[0],   DisplayNumDirFiles },
    { &m_array[4],    &m_array[2],  (char*)&Menu3Name[0],   OutputLevel },
    { &m_array[0],    &m_array[3],  (char*)&Menu4Name[0],   LearnRemoteControl }
};

// Defines for indexing into these structures. If you change the menu structure typedef you MUST change these.
#define     NextMenu    0           /* Menu structure index for pointer to next menu structure */
#define     PrevMenu    2           /* Menu structure index for pointer to previous menu structure */
#define     MenuString  4           /* Menu structure index for pointer to item description string */
#define     MenuFn      6           /* Menu structure index for pointer to menu function */
// End of menu structures.

15: fat文件系统就是一种数据存储结构。使用大容量存储设备如nand flash、CF卡、SD卡等就要用到这类的结构 16: re:说白了,还是结构体、指针。
就看你怎么用。 17: 有需则用是啊 .简单就是没.在你的系统还没有庞大到没有数据结构就崩溃的时候,
有一个需要向数据结构看齐的目标就行了.用心研究程序和控制实体.
等真正需要,就毫不含糊地运用良好的数据结构 18: 算法是灵魂,那数据结构就是灵魂的基础!    没有用数据结构,那是我们水平还不够:看看linux内核代码里面,作者运用数据结构到了炉火纯清之境界,尤其在进程调度和文件系统中!每一个结构体都是很自然的,跟实际要描述的物体紧密相关,不多带一点冗余,应该值得我们去学会这种思想。我是做音视频处理的(嵌入式多媒体),我也会经常用到一些简单的数据结构,最简单的就是:大家知道,DSP都是深度流水的,千万不要随意打断他的流水线,在图像数据或者音频PCM数据往外刷完的时候,要在相应的中断程序里面调整使下一次把别的数据刷出去,这时就有很多的判断语句,势必会打断流水,这时候应该用指针数组,把if-else语句全去掉。 19: 数据结构与算法是内功啊招式易学修为难;
大凡精进者,无非内功深厚也...

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]