利用栈操作实现八皇后问题求解
-数据结构题目
思路:
使用递归思想,每一行逐个位置放入皇后,判断是否冲突,若冲突,则试探下一个位置,若不冲突,则继续下一行的递归,直至全部放置完成。
c++代码如下:
#include <stdlib.h>
#include <iostream>
using namespace std;
#define StackInitSize 256 //初次分配空间大小
#define StackIncrement 128 //空间分配增量大小
int resultCount=0;
typedef struct
{
int col; //列坐标值
int row; //行坐标值
}Point;
typedef struct SeqStack
{
Point *pBase; //动态存储空间的基地址,作为栈底
Point *pTop; //栈顶指针,指向真实栈顶元素的下一个位置
int stacksize; //当前已分配的存储空间大小
}SeqStack;
void InitStack( SeqStack &S )
{
//初始化顺序栈
cout<<"-进行初始化顺序栈操作-"<<endl;
S.pBase = ( Point* )malloc( StackInitSize * sizeof(Point) ); //申请存储空间,该空间置空
if( S.pBase == NULL )
exit(1); //存储空间申请失败
S.pTop = ( Point* )malloc( StackInitSize * sizeof(Point) ); //再申请一个存储空间,用来以后存放数据
if( S