全球旧事资料 分类
栈顶元素取出。StackEmptyS判断栈是否为空ADTStack2.本程序包含2个模块1主程序模块Voidmai
初始化棋盘;
fwhile1接受命令;处理命令;执行Pathxy2栈模块-实现栈抽象数据类型3.探讨每次选择位置的“最佳策略”思路1)先求出每个坐标点的权值,即是该坐标下一步有几个方向可以走2)权值越小则被上一点选中的可能性就越大,下一个方向八个值的选择顺序保存MAPXYK数组中,0K7,例如MAPXY0保存的是下一步优先选择走的方向,MAPXY7就是最后才走的。边界的点最先走,然后再走中间。4.踏遍棋盘伪码算法:While()若已经走了64步则打印输出结果;若要寻找多条路径,出栈,回溯到上一步,下一步方向加1否则若该点所有方向已走完出栈,回溯到上一个点,上一个点要走的方向加1若该点所有方向未走完若该点未走过且在棋盘内入栈,已走步数加1否则下一步方向加1
三.详细设计1.栈类型
typedefstructchessi
tx棋盘的行坐标i
ty棋盘的列坐标i
tz该点的方向值chesstypedefchessSElemType
f栈的顺序存储表示typedefstructSqStackSElemTypebase在栈构造之前和销毁之后,base的值为NULLSElemTypetop栈顶指针i
tstacksize当前已分配的存储空间,以元素为单位SqStack顺序栈栈基本操作:StatusI
itStackSqStackS构造一个空栈SSbaseSElemTypemallocSTACK_INIT_SIZEsizeofSElemTypeifSbaseexitOVERFLOW存储分配失败StopSbaseSstacksizeSTACK_INIT_SIZEretur
OKStatusStackEmptySqStackS若栈S为空栈,则返回TRUE,否则返回FALSEifStopSbaseretur
TRUEelseretur
FALSEStatusGetTopSqStackSSElemTypee若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERRORifStopSbaseeStop1retur
OKelseretur
ERRORStatusSetTopSqStackSSElemTypeeifStopSbaseStop1eretur
OKelse
fretur
ERRORStatusPushSqStackSSElemTypee插入元素e为新的栈顶元素ifStopSbaseSstacksize栈满,追加存储空间SbaseSElemTypereallocSbaseSstacksizeSTACKINCREMENTsizeofSElemTypeifSbaseexitOVERFLOW存储分配失败StopSbaseSstacksizeSstacksizeSTACKINCREMENTStoperetur
OKStatusPopSqStackSSElemTypee若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORifStopSbaseretur
ERROReStopretur
OK
2.求最佳策略算法
求各点权值可走的方向数该值越小则被上一点选中的可能性r
好听全球资料 返回顶部