程式設計實現下面的棧頂操作:
解析:顯然這裡需要實現棧的3種基本操作,即進棧、出棧以及判空。為了方便起見,使用單鏈表結構實現棧並且使用類的形式來定義站內及其節點。首先是節點類和棧類的具體定義,程式**如下:class mydata
;
由於不能直接操作棧底,因此這裡沒有定義棧底的指標。在mystack的默#include using namespace std;
class mydata
//預設建構函式
mydata(int value) : data(value), next(null){} //帶引數的建構函式
int data; //資料域
mydata *next; //下乙個節點
};class mystack
//預設建構函式
void push(mydata data); //進棧
void pop(mydata *pdata); //出棧
bool isempty(); //是否為空
mydata *top; //棧頂
};
面試題 實現單鏈表的逆序
思路 1.找到頭結點 2.依次遍歷每個結點,並且每次都插到第乙個結點之後 3.頭結點.next null 稱為尾節點 迴圈方式 實現 list func list head list pre head 把頭結點給了pre list cur pre.next list tmp 定義乙個結點以便迴圈幅值...
面試題 單鏈表反轉
問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...
單鏈表的面試題
自定義標頭檔案部分 void deletenottail pnode pos 刪除乙個無頭單鏈表的非尾節點 void insertnothead pnode phead,pnode pos,datatype data 在無頭單鏈表的乙個非頭節點前插入乙個節點 void josephcircle pn...