看板 C_and_CPP 關於我們 聯絡資訊
錯誤結果:執行時直接當掉 程式碼: #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,第二個執行完的指標傳入第三個。可是卡了 一陣子還是沒想到好的改法,想請大家幫忙解惑 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.214.137 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434199053.A.D90.html
LPH66: 再多一層指標就能傳回東西了 06/13 20:51
arthur104: pointer是pass by value的,所以當然無法改值 06/14 01:05