推 aecho:@@ 哪裏不懂.... 11/08 13:16
推 mcdino:TMP->VAL=VALUE....有關全部NULL的地ꐠ 11/08 13:40
> -------------------------------------------------------------------------- <
作者: aecho (星空下的鮪魚) 看板: C_and_CPP
標題: Re: [問題] stack反字串
時間: Tue Nov 8 21:14:23 2005
※ 引述《mcdino (親愛的呆諾)》之銘言:
: 我看到個範例 有人可以幫我解釋一下嗎??
: 因為有點不懂
: #include <iostream>
: #include <cstdlib>
: using namespace std;
: struct stack
: {
: char val;
: struct stack* nex;
: } *top=NULL;
一開始的top 是一個NULL 用 … 表示 ....
如果不是null的stack,用 □ 表示
-> 表示連結
: void push(char);
push在做的事情....
1.當top為NULL的時候,建立一個stack塞入資料,然後尾巴指向NULL
… ==> □->…
∣ ∣
top top
2.當top不是NULL的時候,同樣建一個stack塞入資料,然後尾巴指向舊的top,
並指向新的top
□->… ==> □->□->…
∣ ∣
top top
: void push(char value)
: {
: if(top==NULL)
: {
: stack* tmp=new stack;
: tmp->val=value;
: tmp->nex=NULL;
: top=tmp;
: }
: else
: {
: stack* tmp=new stack;
: tmp->val=value;
: tmp->nex=top;
: top=tmp;
: }
: }
接著來看main吧
: int main()
: {
: char input;
: cout << "請輸入一個字串:";
: while((input=cin.get())!='\n')
: push(input);
從上面應該可以看出來,input會成為一個
□->□->□->□->… 這樣的結構 最後會指向一個null …
∣
top
: cout << "反轉字串:";
: stack* pShow=top;
*pShow指向top 也就是最前面的那個 □
: while(pShow!=NULL)
: {
: cout << pShow->val;
: pShow=pShow->nex;
: }
讓pShow沿著->一個一個找到最後一個
那最後一個會是什麼呢... 就是尾巴… 的前面那一個□
所以當pShow 為NULL 就是沒東西了 這就是while裏面的條件
pShow != NULL 也是為什麼要先cout後 再用pShow=pShow->nex; 移位
: system("pause");
: return 0;
: }
--
或許人生是一段整合內在的自己
並尋求人間一點真情的過程吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.214.33