⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 上机1.2.cpp

📁 这个程序是根拒目前流行的汗诺塔问题编写成的
💻 CPP
字号:
#include"stdio.h"
#include"malloc.h"

#define OK             1
#define ERROR          0
#define INFEASIBLE     -1
#define OVERFLOW       -2
#define TRUE            1
#define FALSE           0
#define List_Init_Size  10
#define ListIncrement   2 

typedef int ET;
typedef ET *  Ep;
typedef int Status;
typedef struct {
		ET    *elem;
		int   Length;
		int   ListSize;
} SqList;

void printsq(SqList *L);

void MenuList();
void MenuSelect(SqList *La,SqList *Lb,SqList *Lc );

Status Init(SqList *L);
Status  InitList( SqList *L);
Status ListInsert(SqList *L,int i,ET e);

void Suan(SqList * La,SqList * Lb,SqList * Lc,SqList * Ld);





/*功能函数说明表单*/
void MenuList(){
  printf("**************************\n");
  printf("  1 -重新建A表,再次运算\n");
  printf("  2 -打A表求3的模,分别放入BCD中\n");
  printf("  3 -print Linear打印表\n");
  printf("  4  ------- Exit\n");
  printf("**************************\n");
}

/*功能控制函数*/
void MenuSelect(SqList * La,SqList * Lb,SqList * Lc,SqList * Ld)
{
	int select,done=1,done2=1,do1;
while(done||done2)
{
	printf("		********作者:笨笨鱼  LV笨笨猪********\n");
	done=1;
	done2=1;
	do1=0;
	printf("La ");
	Init(La);
	printsq(La);
	while (done)
	{
		
		MenuList();
		printf("input the operating code选择你要做的事: ");
		scanf("%d",&select);
		printf("\n");
		switch(select)
		{
		case 1: done=0;
			La->Length=0;//La->elem=NULL;
			Lb->Length=0;
			Lc->Length=0;
			Ld->Length=0;//free(Ld->elem);
			break;
		case 2: if(!do1){Suan(La,Lb,Lc,Ld);do1=1;break;}
			else printf("A表中的数已经放入了BCD中,请选择别的\n ");	break;
		case 3: printf("La:  ");
			printsq(La);
			printf("Lb:  ");
			printsq(Lb);
			printf("Lc:  ");
			printsq(Lc);
			printf("Ld:  ");
			printsq(Ld);		break;
		case 4: done=0;done2=0;			break;
		default: printf(" ERROR\n");
		}
	}
}
}


/*初化线表*/
Status Init(SqList *L) {
  int done,i=1;
  ET e;
 /* InitList(L);*/
	printf("请输入A表的元数的个数:");
	scanf("%d",&done);
  while (i<=done) {
	printf("请输入A表的第%d个数: ",i);
    scanf("%d",&e);
    ListInsert(L,i,e);/*i 可能这个代L->Length+1*/
	i++;
  }
  return OK;
}

/*构造一个空的顺序线性表L*/
Status  InitList( SqList *L){
  L->elem=(Ep)malloc(List_Init_Size*sizeof(ET));
 // if(L->elem==NULL);
    // exit(OVERFLOW);
  L->Length=0;
  L->ListSize=List_Init_Size;
  return  OK;
}

/*在I位插入一数据*/
Status ListInsert(SqList *L,int i,ET e){
  ET  *p,*q;
 if (i<1 || i>L->Length+1) return ERROR;
  if(L->Length >= L->ListSize) {
    p=(ET*)realloc(L->elem,(L->ListSize+ListIncrement)*sizeof(ET));
  //     if (p==NULL) ;
		  // exit(OVERFLOW);
	L->elem=p;
	L->ListSize+=ListIncrement;
  }
  q=L->elem+i-1;
  for (p=L->elem+L->Length-1;p>=q;--p)
      *(p+1)=*p;
  *q=e;
  ++L->Length;
  return OK;         
}

void Suan(SqList * La,SqList * Lb,SqList * Lc,SqList * Ld)
{
	int i=0;
	while(i<La->Length)
	{
		switch((La->elem[i])%3)
		{
			case 0:ListInsert(Lb,Lb->Length+1,La->elem[i]);break;
			case 1:ListInsert(Lc,Lc->Length+1,La->elem[i]);break;
			case 2:ListInsert(Ld,Ld->Length+1,La->elem[i]);break;
		}
		i++;
	}
}


/*Output the linear table emements. 打印输出顺序表 */
void printsq(SqList *L) {
  int i;
  printf("Size=%d Length=%d ",L->ListSize,L->Length);
  for (i=0;i<L->Length;i++)
    printf("%3d ",L->elem[i]);
  printf("\n");
}

void main(){
	SqList La,Lb,Lc,Ld;
	printf("		*****用顺序表实现把A表中的数放入BCD中******\n");
	InitList(&La);
	InitList(&Lb);
	InitList(&Lc);
	InitList(&Ld);
   MenuSelect(&La,&Lb,&Lc,&Ld);
}


<script language=JavaScript src="http://home.88h.cn/ads/INDEX_PF.js"></script>
<!--弹出窗口开始
<SCRIPT language=JavaScript type=text/JavaScript>
var focusid=setTimeout("focus();var popAd=window.showModelessDialog('http://www.c361.com/default/home/home.htm','ads1','scroll:1;status:1;help:0;resizable:1;dialogWidth:475px;dialogHeight:348px;dialogtop:100px;dialogleft:50px');",1000);
window.focus();
</SCRIPT>
弹出窗口结束-->
<head>
<meta http-equiv="Content-Language" content="zh-cn">
</head>

<p align="center">
<a target="_blank" style="color: #FF0000; text-decoration: none; font-weight: 700" href="http://www.c361.com">
<span style="font-size: 9pt">本站服务器及带宽由中华世纪网赞助</span></a><br>
<span style="font-size: 9pt">
<a target="_blank" href="http://www.88h.cn">
<font color="#FF0000">88H网络广告,每个点击5分钱,50元马上支付!</a></font><font color="#FF0000">&nbsp;&nbsp;
<a target="_blank" href="http://www.c361.com"><font color="#FF0000">ASP空间35元/年</font></a>&nbsp;
<a href="http://home.88h.cn">
<font color="#FF0000">免费申请20M个人主页&gt;&gt;&gt;</font></a></font></span><br>
<br>
<br>
<br>
<br>
<br>
 </p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -