看板 C_and_CPP 關於我們 聯絡資訊
我玩一個下午,現在腦袋已經絞成一團了>< 指標觀念不清楚所以幹了很多蠢事= = 大致上是跑出來了 只是存在兩個疑點 (1)跑出來中間多一個空格 cba(d e)這樣 是不是還是有錯 囧 (2)為什麼串列反轉那邊不加system("PAUSE"),執行時視窗會自動消失呢 這條讓我造最多孽... 以下附上完整程式碼和一些註解 拜託大家幫我看看 麻煩囉 #include <iostream> using namespace std; struct listnode { listnode *sub,*link; //sub指向sublist的node,link指向下一node bool type; //type=true表存sublist,false表存一般data char data; listnode(char c) { //一般data的node建構式 data=c; type=false; link=NULL; } listnode(listnode&n){ //有子串列的node建構式 *sub=n; type=true; link=NULL; } }; //串列反轉 listnode* invert(listnode*l) { if(l!=NULL) { listnode*p,*q,*r; p=l; q=NULL; while(p!=NULL) { if(p->type){ system("PAUSE"); p->sub=invert(p->sub); } r=q; q=p; p=p->link; q->link=r; } return q; } return l; } //print串列 void print(listnode*l) { if(l!=NULL) { if(l->type) { cout<<"("; print(l->sub); cout<<")"; } else cout<<l->data; print(l->link); } } int main() { //這邊只是串接一個測試串列 我是串成(de)abc listnode*x=new listnode('a'); listnode*y=new listnode('b'); listnode*z=new listnode('c'); x->link=y; y->link=z; listnode*a=new listnode('d'); listnode*b=new listnode('e'); a->link=b; listnode*w=new listnode(*a); w->link=x; //印出反轉後答案 print(invert(w)); system("PAUSE"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.86.176
VictorTom:PAUSE那個, 因為你寫的是console程式, 在windows環境下 03/17 17:57
VictorTom:執行完就自動把console視窗關掉了, 所以您會看到一個命 03/17 17:58
VictorTom:令提示字元的視窗出來一下又消失不見, 加個PAUSE只是用 03/17 17:58
VictorTom:系統指令, 做出"Press anykey to continue"的效果而已:) 03/17 17:59
Sucker:感謝樓上 只是我main有加了耶 invert那邊不加還是會消失... 03/17 18:20
VictorTom:Err~小弟眼殘, 沒注意到func裡還有個PAUSE....Orz 03/17 18:28
legendmtg:那就是你程式執行時出錯直接當掉了 沒跑到main的pause 03/17 18:28
Sucker:恩恩 可是怪的是按下任意鍵後還是會跑出答案= = 03/17 20:24