社区
数据结构与算法
帖子详情
关于算法的思考问题
xrbeck
2002-01-09 01:45:13
想知道各位大虾在思考具体的解决问题的算法的时候
是如何下笔的,小弟都是直接在机子上写的,现在
想想似乎效果不大好,思路会比较混乱,而在纸上写的话,
又比较难转换成程序,想听听各位大虾的意见,谢谢!
...全文
158
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还不错。
说说单词智能纠错
算法
--探讨
思考问题
的方法
本文深入探讨了Word文档中使用的拼写检查与纠正
算法
,包括布隆过滤器、最大公共子串、Levenshtein距离等关键技术。这些
算法
不仅用于评估单词的正确性,还能计算字符串之间的相似度。
[转贴]说说单词智能纠错
算法
--探讨
思考问题
的方法
本文深入探讨Word软件中使用的拼写纠错
算法
,包括布隆过滤器用于快速判断单词是否正确,以及Levenshtein距离
算法
衡量单词间的相似度,为用户提供准确的拼写建议。
刷
算法
题学到的一些
思考问题
的方式(动态更新)
本文提供了一种解题方法,通过分析解的性质,构造可能的解集,遍历并筛选出最优解。适用于各类数学、
算法
问题求解。
如何看待
算法
本书旨在教授学生如何抽象地理解和设计
算法
,采用迭代、递归等元
算法
的视角,培养深入
思考问题
本质的能力。
从 LRU Cache 带你看面试的本质
本文深入解析LRUCache的实现原理,采用HashMap与DoublyLinkedList数据结构,阐述了
算法
面试背后的考察要点,包括
思考问题
的方式、分析解决问题的能力以及沟通技巧。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章