#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACK_ADD_SIZE 10 //存储空间分配增量
typedef struct adress
{
int x;
int y;
int di; //表示8个方向
}AD;
typedef struct
{
AD *base; //构造前和销毁后,base=NULL
AD *top; //栈顶指针
int stacksize; //当前已分配存储空间,元素为单位
}SqStack;
void InitStack(SqStack *s) //初始化栈
{
s->base = (AD*)malloc(STACK_INIT_SIZE*sizeof(AD));
if(!(s->base)) exit(1); //分配失败程序结束
s->top = s->base;
s->stacksize = STACK_INIT_SIZE;
}
AD GetTop(SqStack s) //取得栈顶元素
{
if(s.top == s.base) exit(1);//栈内无元素
return *(s.top-1);
}
void Push(SqStack *s,AD e) //入栈
{
if(s->top - s->base >= s->stacksize) //栈满追加存储空间
{
s->base = (AD*)realloc(s->base,
(s->stacksize+STACK_ADD_SIZE)*sizeof(AD));
if(!s->
【数据结构】关于马踏棋盘(8皇后问题)
最新推荐文章于 2021-12-26 13:25:23 发布
本文介绍了如何利用栈解决经典的8皇后问题,通过初始化棋盘、遍历和判断可行路径来实现非递归的解决方案。文章包含代码实现,展示了如何进行栈的操作,包括入栈、出栈以及检查棋盘是否可以通过。
摘要由CSDN通过智能技术生成