社区
数据结构与算法
帖子详情
关于算法的思考问题
xrbeck
2002-01-09 01:45:13
想知道各位大虾在思考具体的解决问题的算法的时候
是如何下笔的,小弟都是直接在机子上写的,现在
想想似乎效果不大好,思路会比较混乱,而在纸上写的话,
又比较难转换成程序,想听听各位大虾的意见,谢谢!
...全文
119
15
打赏
收藏
关于算法的思考问题
想知道各位大虾在思考具体的解决问题的算法的时候 是如何下笔的,小弟都是直接在机子上写的,现在 想想似乎效果不大好,思路会比较混乱,而在纸上写的话, 又比较难转换成程序,想听听各位大虾的意见,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xrbeck
2002-01-16
打赏
举报
回复
谢谢大家。
xrbeck
2002-01-11
打赏
举报
回复
对。这位兄台提到的经验借鉴的问题的确是很不错。。:)
毕竟白手起家比较难。呵呵。
Ngod
2002-01-11
打赏
举报
回复
现在网上找找有没有相似的~!
没有的话就只好自己想了!
前人给我们那么多经验,都可以借鉴啊!
象那些数据结构,算发设计,软件工程不就是这么出来的吗?
毕竟这些都是前辈的心血积累,当然还得根据你的工程的大小和习惯而决定用什么喽!
xrbeck
2002-01-11
打赏
举报
回复
请大家帮忙看看。谢谢。知无不言,言无不尽。百无禁忌。。。:)
xrbeck
2002-01-10
打赏
举报
回复
谢谢。谢谢。。各位都来畅所欲言啊 :)
xrbeck
2002-01-10
打赏
举报
回复
就跟楼上的大虾说的样的“多实践少空谈",来举个例子吧。
现在假设来考虑二叉树按深度遍历的问题:
一开始,因为想到要有节点的进进出出,所以很自然
的就想到了用栈,可是又仔细想想,栈的顺序不对,应该
是一种FIFO的关系,就想到了队列,然后具体细节化一下
就应该是把左右子树进队,然后取队头的元素再进行进队,
这样的话正好完成目的,描述如下:
while(队空)
{
如果有左子树
进队
如果有右子树
进队
打印队头节点,进行循环
}
按照思路给出具体的算法如下:
//----------------------------------------------------
// 按照深度来遍历 ,用队列的方式
void DeepOrder(pnode root)
{
pLinkNode head,p,q;
if(!root)
{
printf("The Tree is empty\n");
return;
}
head=(pLinkNode)malloc(LinkLen);
head->pdata=root;
head->next=NULL;
while(head)
{
printf("%c\t",head->pdata->data);
p=head;
// 应该找在队列最后
while(p->next)
{
p=p->next;
}
if(head->pdata->lchild) // 有左子树可以进队列
{
// 产生一个新节点等于左子树
q=(pLinkNode)malloc(LinkLen);
q->pdata=head->pdata->lchild;
q->next=NULL;
// 进入队列
p->next=q;
p=p->next;
}
if(head->pdata->rchild) // 有右子树可以进队列
{
// 产生一个新节点等于右子树
q=(pLinkNode)malloc(LinkLen);
q->pdata=head->pdata->rchild;
q->next=NULL;
// 进入队列
p->next=q;
p=p->next;
}
// 释放当前节点
// p=head;
head=head->next;
// free(p); // memory leak...
}
}
//----------------------------------------------------
其中结构体格式如下:
// 二叉树节点
typedef struct tagNode
{
char data;
struct tagNode *lchild,*rchild;
}node,*pnode;
// 为了深度遍历的指针队列
typedef struct tagLinkNode
{
struct tagNode *pdata;
struct tagLinkNode *next;
}LinkNode,*pLinkNode;
# define LinkLen sizeof(LinkNode)
# define Len sizeof(node)
上面就是小弟刚才在思考这个问题的一个过程,当然题目本身没什么,主要是想
请大家对小弟的思路进行批评和指正,看看那些方面不足,比如说一开始思考
的切入点等等,谢谢大家了!
kld3000
2002-01-10
打赏
举报
回复
其实, 数据结构就是学习的一种思维过程
有了这个思想, 有了这个想法, 再去编
当然是在纸上画好流程图, 再上机去弄
这样好一点
不过一些最基本的东西, 最基本的程序段, 你至少应该记得
否则,呵呵, 太难了
wanbaocheng
2002-01-09
打赏
举报
回复
首先把解决问题的算法弄清楚,接下来的编程就是小意思了,不过一些细节还是要注意的,多实践少空谈。
上海大闲人
2002-01-09
打赏
举报
回复
每个人通常都有自己的习惯,同时对它也很自信。
一般的小程序都是孕育脑中,不用去画流程图,但当写一个大的项目时,流程图(包括接口)就很重要了,要写一个强壮的软件,这是必须的一步。
抛砖引玉!
starfish
2002-01-09
打赏
举报
回复
upig(路过的)说的没错
只要想清楚了,编程实现是很容易的事情
如果你觉得想出来了算法但编程实现不容易,那要么就是你并没有把问题想清楚,要么就是你的编程能力不够(数据结构等基础知识掌握的不好)。
思考和实现的时候,你要学会自顶向下的程序设计思想,先把整体框架搭出来,然后再慢慢的填充细节
eagle_canfly
2002-01-09
打赏
举报
回复
将注解一并写在函数声明后,in C++ clear
xrbeck
2002-01-09
打赏
举报
回复
不错不错。不过似乎意犹未尽,各位大虾快来啊 :)
upig
2002-01-09
打赏
举报
回复
对于数据算法的东西
若不太大,就先在心中想清楚,
胸有成竹后就可以开始编了。
若你觉得想到的东西可能记不住,就可以写在纸上,只要写大体就成了.
若是很大的算法,可以先细分,粗分,然后照上面做。
jimsuker
2002-01-09
打赏
举报
回复
放在脑子里
hydra1101
2002-01-09
打赏
举报
回复
rational还不错。
算法
导论(正宗中文第三版)3-1
由于关于矩阵基础和strassen
算法
的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 修改了对knuth-morris-pratt字符串匹配
算法
的讨论。 新增100道练习和28道思考题,还更新并补充了参考文献。
微软等数据结构+
算法
面试100题全部答案集锦
面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试题目,最终成就了一个名为:结构之法
算法
之道的编程面试与
算法
研究并重的博客,如今,此博客影响力逐步渗透到海外,及至到整个互联网。 在此之前,...
算法
导论第十六章贪心
算法
-思考题16-1找零问题
但是没有得到一个有效的方法证明什么情况能用贪心
算法
,什么情况不能。 d小问的思路: 假设m(n)表示找零n美分需要的最少硬币数,硬币面值为c1,c2, ...,ck,并令m[0]=0,则m(n)=1如果n等于某个ci,否则m(n) =min{ m...
[转]关于寻路
算法
的一些思考
关于寻路
算法
的一些思考
(
算法
)通俗易懂的字符串匹配KMP
算法
及求next值
算法
在考研备考中,参考严奶奶的教材,我也是在关于求next值的
算法
中卡了一下午时间,感觉挺有意思的,把一些思考的结果整理出来,与大家一起探讨。 以下的顺序为 1、最基本的朴素
算法
2、优化的KMP
算法
3、应
算法
...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章