voidNQueensProblemStack(intsize,FILE*outputFile){//externintpartFinished(int*arr,intlen);intdepth;inti;int*arr;PSeqStackmyStack;intflag;assertF(outputFile!=NULL,"inNQueensProblemStack,outputFileisnull\n");myStack=createNullSeqStack();arr=(int*)malloc(sizeof(int)*size);assertF(arr!=NULL,"inNQueensProblemStack,memapplyfailure\n");//datainitseqPush(myStack,0);i=0;depth=1;arr[0]=0;flag=0;while(!isNullSeqStack(myStack)){if(depth==size){fprintf(outputFile,"Answerof%dQueensProblem:\r\n",size);outputListArrInt(arr,0,size,outputFile);outputQueensAns0(arr,size,outputFile);flag=1;break;}else{if(arr[depth-1]==size)//previoushasreachtoend.{seqPop(myStack);depth-=2;//returntopreviouslevelarr[depth]=seqPop(myStack)+1;seqPush(myStack,arr[depth]);depth++;//setcurrentsearchleveli=0;}else{arr[depth]=i;//nextlevel'spossibleposprintf("%d\t",arr[depth]);if(!partFinished(arr,depth+1)&&i<size-1)// (!partFinished(arr,depth+1)&&i==size-1)// {depth--;//returntopreviouslevelarr[depth]=seqPop(myStack)+1;seqPush(myStack,arr[depth]);depth++;//setcurrentsearchleveli=0;}else//nocollide,branchingtonextlevel{seqPush(myStack,arr[depth]);//savecurrentdepth++;i=0;}}}}