#include "stdio.h"
#include "string.h"
#include "conio.h"
FILE *fp;/*设立文件指针,以便将它用于其他函数中*/
struct a{
long m,s;
struct a *next;
};/*数组类型a:记录各种情况下船上的商人和仆人数,m:代表商人数
s:代表仆人数*/
struct a *jj,head;/*head为头指针的链表单元(船上的人数的各种情况的链表)*/
int n,total=0,js=0;/*total表示船上各种情况总数*/
struct aim {
long m1,s1,m2,s2;
int n;
struct aim *back,*next;};/*用于建立双向的指针链表,记入符合的情况,m1,s1表示要过岸的商人数和仆人数;m2,s2表示过岸了的商人数和仆人数,n表示来回的次数*/
int k1,k2;
void freeit(struct aim *p){
struct aim *p1=p; p1=p->back;
free(p);
if(p1!=NULL)
p1->next=NULL;
return;
}/*释放该单元格,并将其上的单元格的next指针还原*/
int determ(struct aim *p)
{ struct aim *p1=p;
if(p->s1>k2)return -1;/*仆人数不能超过总仆人