错误结果:执行时直接当掉
程式码:
#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,第二个执行完的指标传入第三个。可是卡了
一阵子还是没想到好的改法,想请大家帮忙解惑 谢谢~