[问题] 河内塔用堆叠实作时产生的问题

楼主: j220584470k (ㄚ正)   2015-06-13 20:37:30
错误结果:执行时直接当掉
程式码:
#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,第二个执行完的指标传入第三个。可是卡了
一阵子还是没想到好的改法,想请大家帮忙解惑 谢谢~
作者: LPH66 (-6.2598534e+18f)   2015-06-13 20:51:00
再多一层指标就能传回东西了
作者: arthur104 (arthur)   2015-06-14 01:05:00
pointer是pass by value的,所以当然无法改值

Links booklink

Contact Us: admin [ a t ] ucptt.com