- 1、本文档共97页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编程原则
2014年3月27日
22:37
•数据格式不合适,任务与任务之间需要相互转换
•如果不能很好地组织数据结构,将很容易出错或者需要大量的修补
•计算机编程应减少全局变量,不利于模块化和调试,不过C51中却很
合适
•对一个函数,可以列出它的precondition和postcondition
•传参时如果参数很大,复制它将使用大量的时间,比如结构体
•自顶向下细分原则,主程序所有工作都要分给函数来执行,编写主程
序时就要想清所有的原理,但是具体的考虑可以延后
•每个函数都应当只完成一项任务,但一定要很好的完成
•函数输出应该尽量简洁,尽量避免使用全局变量
•为了单独调试某些函数,可以使用占位程序(一些简短的虚拟函数)
分区数据结构的第1页
生命游戏
2014年7月27日
14:32
•多数程序90%的计算时间花费在10%的代码上,在生命游戏中,是判断周围细胞的循环
•switch中,case结果一样:
case1:
case2:
printf(NO!);
•生命游戏中,存活细胞的数量一般远远小于网格的总数(比如1200个中的40个),这样
可以把计算限制在一个有限区域中
•列表:数组无法使用变量声明(起码大部分环境不行),可变大小的列表可以使用固定
长度的数组来实现,生命游戏中就存在要处理的细胞数是变化的的情况
typedefCellListEntry;
在头文件中写typedefcharListEntry;这样在不同环境下修改头文件即可
分区数据结构的第2页
堆栈
2014727
年月日
15:54
•堆栈是一种数据结构
•把数据压入满堆栈或从空堆栈读出数据都应报错
一般的堆栈和可遍历的堆栈严格来说是两种数据类型
如果有必要,可以编写结合链表的堆栈,需要两个*head用于入栈、出
栈,一个是栈顶的指针,一个是临时替换的
为了提高程序的效率,一般大的数据结构无论是否修改都传指针
分区数据结构的第3页
不可遍历堆栈代码
2014年8月4日
15:38
#includestdlib.h
#includestdio.h
#defineMAXSTACK5
typedefenumBoolean{FALSE,TRUE}Boolean;
typedefcharStackEntry;
typedefstructstack
{
inttop;//记录这是堆栈的第几个
StackEntryentry[MAXSTACK];
}Stack;
voidError(char*);
voidCreateStack(Stack*s);
BooleanStackEmpty(Stack*s);
BooleanStackFull(Stack*s);
voidPush(StackEntryitem,Stack*s);
voidPop(StackEntry*item,Stack*s);
voidClearStack(Stack*s);
intStackSize(Stack*s);
voidStackTop(StackEntry*item,Stack*s);
intMenu();
voidmain()
{
intchoice=-1;
Stacka;
Stack*aloc=a;
StackEntrydata;
StackEntry*dataloc=data;
CreateStack(aloc);
while(1)
{
choice=-1;
printf(堆栈现有%d个成员,StackSize(aloc));
MENU:
分区数据结构的第4页
MENU:
choice=Menu();
文档评论(0)