亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hanoi.txt

?? 很多朋友都久等了,這是我做了很久的程序!一個非遞歸的汗諾塔代碼,很好的!
?? TXT
字號:
HANOI塔問題的非遞歸解 
 
  解決HANOI塔問題的首選方法是遞歸函數算法。 遞歸函數的實質是函數調用自身,
并且調用一次就對參數進行降階或對問題進行簡化。具體可參見作者的《HANOI塔問題的
遞歸算法解 》一文。
    在遞歸函數算法中,隱含著復雜的函數嵌套調用關系,涉及到利用堆棧進行參數的
保存、調用。以上這些對于作者是無需考慮的,所以十分方便。
    但是,如果由作者自己來實現堆棧進行參數的保存、調用,以及利用函數的循環
調用,同樣可以實現遞歸函數算法的功能。
    簡單的說:函數的循環調用 + 堆棧 = 遞歸函數。
    以下是程序的簡要說明:

      1' 創建鏈表結構numnode作為堆棧,保存每次迭代的盤子數量;             
      2' 創建鏈表結構ptnode作為堆棧,保存每次迭代的原柱,中間柱,          
           目標柱的指針,由三個指針s1,s2,s3分別指向保存原柱,                         
           中間柱,目標柱的指針的堆棧;                                                     
      3' 將迭代操作區分為正向迭代和反向回溯,用變量direc標示;            
      4' 在迭代至只有一個盤子或回溯時,進行移位操作。在函數                
           digui(int ,char *,char *,char *) 中實現。
           
/*
  Name:     hanoinorecursive.c      
  Author:       zhuqing
  Description:      HANOI塔問題的非遞歸解   
  Date: 06-08-03 13:30
  Copyright: 
*/
#include <stdio.h>
#include <alloc.h>
 
#define N 5
int direc;
int tmp;
/* 保存每次迭代的盤子數量 */
struct numnode{
 int num;
 struct numnode *next; 
};

struct numnode *nn;
/* 分別保存每次迭代的原柱,中間柱,目標柱的3個指針 */
struct ptnode{
 char *ch;
 struct ptnode *next;
} *s1,*s2,*s3;
/* 原柱指針堆棧的push函數 */ 
void push1(char* a){
 struct ptnode *tmp;
 tmp=(struct ptnode *)malloc((int)sizeof(struct ptnode));
 tmp->ch=a;
 tmp->next=s1;
 s1=tmp; 
}
/* 中間柱指針堆棧的push函數 */ 
void push2(char* a){
 struct ptnode *tmp;
 tmp=(struct ptnode *)malloc((int)sizeof(struct ptnode));
 tmp->ch=a;
 tmp->next=s2;
 s2=tmp; 
}
/* 目標柱指針堆棧的push函數 */ 
void push3(char* a){
 struct ptnode *tmp;
 tmp=(struct ptnode *)malloc((int)sizeof(struct ptnode));
 tmp->ch=a;
 tmp->next=s3;
 s3=tmp; 
}
/* 原柱指針堆棧的pop函數 */ 
char* pop1(){
 struct ptnode *tmp;
 char* ch;
 ch=s1->ch; 
 tmp=s1;
 s1=s1->next;
 free(tmp);
 return ch;
}
/* 中間柱指針堆棧的pop函數 */ 
char* pop2(){
 struct ptnode *tmp;
 char* ch;
 ch=s2->ch; 
 tmp= s2;
 s2=s2->next;
 free(tmp);
 return ch;
}
/* 目標柱指針堆棧的pop函數 */ 
char* pop3(){
 struct ptnode *tmp;
 char* ch;
 ch=s3->ch; 
 tmp= s3;
 s3=s3->next;
 free(tmp);
 return ch;
} 
/* 保存盤子個數堆棧的push函數 */ 
void pushn(int a){
 struct numnode *tmp;
 tmp=(struct numnode *)malloc((int)sizeof(struct numnode));
 tmp->num=a;
 tmp->next=nn;
 nn=tmp; 
}
/* 保存盤子個數堆棧的pop函數 */
int popn(){
 struct numnode *tmp;
 int a;
 a=nn->num; 
 tmp= nn;
 nn=nn->next;
 /* free(tmp); */
 return a;
} 
/* 原柱,中間柱,目標柱初值數組 */ 
char a[9]={'1','2','3','4','5','6','7','8','9'};

char b[9]={'0','0','0','0','0','0','0','0','0'};

char c[9]={'0','0','0','0','0','0','0','0','0'};

int num=N;
char *x1=a;
char *x2=b;
char *x3=c;
int step=0; 
void prnt();

/*   核心函數,功能:進行迭代、回溯、移位操作    */
/*   參數說明:n:盤子個數;                      */
/*             t1,t2,t3:3指針                   */
/*               分別指向原柱、中間柱、          */
/*               目標柱數組;                    */  
void digui(int n,char *t1,char *t2,char *t3){
    if(n<=0)return;
 if(direc>0){
  if(n>1){
    pushn(n);
    push1(t2);
    push2(t1);
    push3(t3);
    x1=t1;
    x2=t3;
    x3=t2;
    num--;
    return;
        }        
        t3[0]=t1[0];
        t1[0]='0';
        prnt();
        direc=-1;
        num=popn();
        x1=pop1();
        x2=pop2();
        x3=pop3();    
        return;
 }
 else{
        if(n>2){    
            *(t3+n-1)=*(t2+n-1);
            *(t2+n-1)='0';
            prnt();
            direc=1;   
      num--;                                           
            return;                
        }
        *(t3+1)=*(t2+1);
        *(t2+1)='0';
        prnt();         
        t3[0]=t1[0];        
        t1[0]='0';
        prnt();
        direc=-1;
        num=popn();                
        x1=pop1();
        x2=pop2();
        x3=pop3();  
        return;
 } 
}
/*  主函數,功能:輔初值,循環調用digui()函數,調用prnt()函數  */ 
main(){
    int i;
    int j=0;
    printf("/*        HANOI塔問題的非遞歸解         */\n");
    printf("/* hanoinorecursive.c                   */\n\n");
    prnt();
    s1=s2=s3=(struct ptnode *)malloc((int)sizeof(struct ptnode));
    s1->ch=s2->ch=s3->ch=NULL;
    s1->next=s2->next=s3->next=NULL;
    nn=(struct numnode *)malloc((int)sizeof(struct numnode));
    nn->next=NULL; 
    direc=1;
    while(1){
        digui(num,x1,x2,x3);
        j++;
        /*if(s1->next==NULL&&direc>0)break;*/
        i=0;
        while(i<N&&c[i]!='0')i++;
        if(i==N)break;   
    } 
    /*printf("%3d",j);*/
    printf("\n");    
    getchar(); 
}
/* 屏幕打印函數 */
void prnt(){
   int i;
   printf("\n");
   printf("STEP%3d\n",step++);
   printf("a:");
   for(i=0;i<N;i++)
        printf("%3c",a[i]);
    printf("\n");
   printf("b:");        
    for(i=0;i<N;i++)
        printf("%3c",b[i]);
    printf("\n");
    printf("c:");                                        
    for(i=0;i<N;i++)
        printf("%3c",c[i]);
    printf("\n\n");        
}           
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡123| 国产激情视频一区二区在线观看| 欧美日韩国产另类一区| 成人国产精品免费网站| 久久99国产精品免费| 天堂久久久久va久久久久| 亚洲最大成人综合| 亚洲精品视频一区| 亚洲品质自拍视频| 国产精品日日摸夜夜摸av| 久久中文字幕电影| 日韩午夜电影在线观看| 这里只有精品99re| 精品欧美一区二区三区精品久久| 亚洲精品一线二线三线无人区| 精品福利在线导航| 亚洲国产成人精品视频| 日韩国产欧美三级| 国产精品羞羞答答xxdd| 成人av电影在线观看| 亚洲国产高清在线| 国产精品成人免费| 亚洲午夜在线视频| 99re免费视频精品全部| 在线免费av一区| 欧美剧情片在线观看| 亚洲精品在线一区二区| 日韩精品电影在线观看| 欧美色欧美亚洲另类二区| 久久色在线观看| 麻豆91免费看| aa级大片欧美| 欧美高清视频不卡网| 一区二区三区四区激情| 97精品久久久午夜一区二区三区 | 亚洲精品videosex极品| 丰满亚洲少妇av| 91在线视频免费观看| 中文字幕在线一区免费| 不卡在线观看av| 亚洲天堂成人在线观看| 久久精品国产99| 色94色欧美sute亚洲线路一ni| 777a∨成人精品桃花网| 日韩精品91亚洲二区在线观看| 欧美男人的天堂一二区| 秋霞电影一区二区| 精品国产三级电影在线观看| 精品制服美女丁香| 国产日韩欧美激情| 青青草国产精品亚洲专区无| 欧美大片国产精品| 亚洲国产精品久久不卡毛片 | 成人午夜精品在线| 日韩精品一区二区三区视频 | 成人美女视频在线观看18| 中文字幕精品三区| 在线观看日韩av先锋影音电影院| 亚洲成年人影院| 一本大道久久精品懂色aⅴ| 日韩欧美国产1| 国产成人亚洲精品狼色在线| 国产精品国模大尺度视频| 在线免费亚洲电影| 日韩精品五月天| 丝袜美腿亚洲色图| xf在线a精品一区二区视频网站| 国产黄色精品视频| 亚洲一区中文在线| 国产成人免费9x9x人网站视频| 中文av一区二区| 欧美日韩dvd在线观看| 国产精品一区三区| 一二三区精品视频| 久久综合av免费| 色一区在线观看| 久久精品国产亚洲一区二区三区| 中文字幕免费不卡在线| 欧美日韩一区二区三区四区| 激情伊人五月天久久综合| 蜜臀av亚洲一区中文字幕| 国产亚洲va综合人人澡精品| 日韩电影免费在线看| 国产精品久久久久国产精品日日| 欧美喷水一区二区| av在线一区二区三区| 毛片一区二区三区| 亚洲午夜精品久久久久久久久| 久久精品一区二区三区不卡 | 欧美一区二区在线免费观看| 肉丝袜脚交视频一区二区| 国产农村妇女毛片精品久久麻豆| 欧美精品久久99| 91丨porny丨中文| 亚洲一区自拍偷拍| 国产精品美女久久久久久久| 日韩欧美一级片| 欧美精品丝袜中出| 色婷婷国产精品久久包臀| 国产一本一道久久香蕉| 国产欧美精品一区| 精品国产人成亚洲区| 欧美伦理影视网| 欧美系列一区二区| 蜜桃一区二区三区在线| 天堂成人免费av电影一区| 亚洲精品久久久久久国产精华液| 国产精品视频一二三区| 日韩免费电影网站| 91精品国产高清一区二区三区| 欧美日韩在线三区| 欧美亚洲国产一区在线观看网站| 91香蕉视频在线| 色视频成人在线观看免| 91论坛在线播放| 一本一道波多野结衣一区二区| 91农村精品一区二区在线| caoporen国产精品视频| av在线一区二区| 色综合一区二区| 久久国产精品免费| 在线视频国产一区| 欧美日本乱大交xxxxx| 欧美日韩亚洲另类| 91精品一区二区三区在线观看| 欧美久久久一区| 欧美一区二区成人| 欧美精品一区二区久久久| 欧美大片顶级少妇| 久久久99精品免费观看| 国产精品久久国产精麻豆99网站| 国产精品成人网| 一区二区三区精品久久久| 午夜精品久久久久久不卡8050| 欧美国产日韩亚洲一区| 国产精品久久久久久久久免费丝袜| 国产精品久久久久久久久果冻传媒| 国产精品久久久久影视| 亚洲免费观看在线观看| 亚洲高清免费观看| 九九久久精品视频| 不卡的看片网站| 欧美在线免费观看视频| 91精品国产福利| 国产色一区二区| 亚洲国产成人av网| 成人免费视频播放| 在线免费亚洲电影| 日韩精品一区二区三区在线播放 | 亚洲第一av色| 精品亚洲成a人| 91色porny在线视频| 欧美日韩精品欧美日韩精品一| 精品欧美乱码久久久久久1区2区| 国产三级三级三级精品8ⅰ区| 亚洲色图视频网| 久久99久久久久久久久久久| 成人一级视频在线观看| 欧美在线观看视频一区二区| 欧美tickle裸体挠脚心vk| 国产精品福利av| 麻豆91免费看| 欧美亚洲一区二区三区四区| 精品美女被调教视频大全网站| 亚洲欧美自拍偷拍| 国产精品三级av在线播放| 五月天亚洲精品| 99久久精品99国产精品| 日韩一级二级三级| 亚洲欧美激情视频在线观看一区二区三区 | 美女精品自拍一二三四| 97aⅴ精品视频一二三区| 日韩欧美亚洲另类制服综合在线| 国产精品电影一区二区三区| 久久av老司机精品网站导航| 色老综合老女人久久久| 中文字幕欧美国产| 激情六月婷婷久久| 欧美一级黄色大片| 亚洲综合色自拍一区| 成人精品免费网站| 久久亚洲一级片| 美女网站在线免费欧美精品| 在线免费观看视频一区| 中文字幕日本不卡| 国产99久久久久久免费看农村| 日韩一区二区三区三四区视频在线观看| 亚洲欧洲色图综合| 成人一道本在线| 久久久久久久久久美女| 中文一区在线播放| 国产精品自在欧美一区| 欧美va亚洲va| 老司机精品视频一区二区三区| 欧美日韩亚洲综合| 亚洲一二三四区不卡| 一本大道久久a久久综合| 亚洲精品一二三四区| 97精品电影院| 亚洲综合一二区|