用栈实现的八皇后问题
代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#define _size 100 //栈的大小
#define len 8
/*
* 八皇后问题
* 对于两点(x1,y1),(x2,y2)
* 不能同行 x1 != x2
* 不能同列 y1 != y2
* 不能在对角线上 斜率的绝对值 |k| != 1 |x1 - x2| != |y1 - y2|
*/
typedef struct{
int x;
int y;
}*point,_point;
typedef struct{
point *base;
point *top;
int size;
}*stack,_stack;
int place(_stack st,int x,int y);
void InitStack(stack *S);
void push(stack st,point p);
point pop(stack st);
int length(stack st);
int isEmpty(stack st);
point getPoint(int i,int j);
void InitStack(stack *S){
(*S) = (stack)malloc(sizeof(_stack));
(*S)->base = (point*) malloc ( _size*sizeof(_point) );
(*S)->top = (*S)->base;
(*S)->size = _size;
}
void push(stack st,point p){
st->top++;
*st->top = p;
}
point pop(stack st){
point p = *st->top;
因篇幅问题不能全部显示,请点此查看更多更全内容