錯誤結果:執行時直接當掉
程式碼:
#include <stdio.h>
#include <stdlib.h>
struct node
{
char data;
struct node *next;
};
typedef struct node NODE;
NODE* creatStack();
NODE* push(NODE* top, char data);
NODE* pop(NODE* top);
void display(NODE* top);
void haoni(int n, NODE* A, NODE* B, NODE* C);
int main(void)
{
NODE* stackA_top = creatStack();
NODE* stackB_top = creatStack();
NODE* stackC_top = creatStack();
stackA_top = push(stackA_top,'5');
stackA_top = push(stackA_top,'4');
stackA_top = push(stackA_top,'3');
stackA_top = push(stackA_top,'2');
stackA_top = push(stackA_top,'1');
haoni(5, stackA_top, stackB_top, stackC_top);
}
void haoni(int n, NODE* A, NODE* B, NODE* C)
{
if(n == 1)
{
char data = A->data;
A = pop(A);
C = push(C,data);
}
else
{
haoni(n-1, A, C, B);
haoni(1, A, B, C );
haoni(n-1, B, A, C);
}
}
補充說明:已找出問題出在else裡的三個haoni,這樣的寫法導致三個haoni裡的指標
A、B、C都是一開始的值,而正確的方法應該是第一次haoni執行完被改變
的指標再傳入第二個haoni,第二個執行完的指標傳入第三個。可是卡了
一陣子還是沒想到好的改法,想請大家幫忙解惑 謝謝~