共2条 1/1
1
跳转至
页
关于大家平时说的“数据结构”的困惑
![](http://m.amcfsurvey.com/uphotos/jackwang/thumb/avatar.jpg)
问 同行里面,经常嘴上挂着“数据结构”,什么要了解“数据结构”啦,
预备知识要“数据结构”啦。很多书上也写道,这个“数据结构”如下之类。
某某说:“数据结构”很重要。。。等等
在此有点含糊,这些提到的“数据结构”到底指什么?
(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: 数据结构与算法是内功啊招式易学修为难;
大凡精进者,无非内功深厚也...
预备知识要“数据结构”啦。很多书上也写道,这个“数据结构”如下之类。
某某说:“数据结构”很重要。。。等等
在此有点含糊,这些提到的“数据结构”到底指什么?
(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
跳转至
页
回复
有奖活动 | |
---|---|
5月直播——【探索边缘智能的未来——直播盛宴即将开启!】 | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 |