既然你的 top是全局變量了,就不需要再在函數(shù)參數(shù)中傳遞了。還有c默認(rèn)是值傳遞,如果調(diào)用的函數(shù)需要修改參數(shù)并傳回,請用引用或者地址來進(jìn)行參數(shù)傳遞。
專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)羅源免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
因為在調(diào)用其他函數(shù)是都是臨時開辟的內(nèi)從空間,但傳的是指針,所以編譯時沒錯,但在連接時地址不一致導(dǎo)致了問題,只有主函數(shù)中真實的創(chuàng)建了頭指針,才不會導(dǎo)致錯誤。
是。但這只是算法描述,將需要的所有定義都省略了,只留下核心代碼,也不能算錯。
1、這個鏈棧應(yīng)該就是一個用鏈表弄的后進(jìn)先出的棧結(jié)構(gòu)。top指針永遠(yuǎn)指向棧的最上面的那個節(jié)點。這個函數(shù)是新加一個節(jié)點到這個棧中,首先分配了空間給s,s是要新加入這個棧的那個節(jié)點。
2、還有,print函數(shù)應(yīng)該是不想修改鏈棧的吧,只是讀取。所以參數(shù)就不要用a的地址了,直接用a傳遞就行了,保證函數(shù)體內(nèi)不會意外修改a。函數(shù)參數(shù)要做相應(yīng)的修改。像這樣:都不用額外借助一個S了。
3、棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。
4、程序基本上是不錯。你的思路也是對的。只是算法上有點不清楚!應(yīng)該是先把字符,入隊和入棧;然后再把出棧的字符 與 出隊的字符進(jìn)行比較,如果完全一致,就說明是匹配的。只需要把函數(shù)compare 調(diào)整一下即可。
5、后面因為arr空間的內(nèi)容已經(jīng)被修改,所以,之后的printf語句都得不到結(jié)果。順便再解釋一下printf(%s\n,p);得到的為什么是亂碼。正如上面所說,先計算參數(shù)p的值保存棧頂。保存的值為arr的地址。
6、出棧,成功返回1,失敗返回0,出棧不取出元素值,只是刪除棧頂元素。如出棧要實現(xiàn),取出元素值,并釋放空間,可結(jié)合取棧頂元素函數(shù)做修改,這里不再給出。
這個鏈棧應(yīng)該就是一個用鏈表弄的后進(jìn)先出的棧結(jié)構(gòu)。top指針永遠(yuǎn)指向棧的最上面的那個節(jié)點。這個函數(shù)是新加一個節(jié)點到這個棧中,首先分配了空間給s,s是要新加入這個棧的那個節(jié)點。
/*linkstack *initstack(linkstack *top) //初始化棧將棧的數(shù)據(jù)設(shè)空// { top-next=null;return top;} 這個函數(shù)沒必要。return (top-next==null);也是錯的。
S=S-next; //S要修改 } 還有,print函數(shù)應(yīng)該是不想修改鏈棧的吧,只是讀取。所以參數(shù)就不要用a的地址了,直接用a傳遞就行了,保證函數(shù)體內(nèi)不會意外修改a。函數(shù)參數(shù)要做相應(yīng)的修改。像這樣:都不用額外借助一個S了。
1、/*linkstack *initstack(linkstack *top) //初始化棧將棧的數(shù)據(jù)設(shè)空// { top-next=null;return top;} 這個函數(shù)沒必要。return (top-next==null);也是錯的。
2、實現(xiàn)鏈棧各種基本運算的算法 編寫程序?qū)崿F(xiàn)鏈棧種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序完成如下功能: 初始化棧 判斷棧是否為空 依次進(jìn)棧a,b,c,d,e元素。
3、還有,print函數(shù)應(yīng)該是不想修改鏈棧的吧,只是讀取。所以參數(shù)就不要用a的地址了,直接用a傳遞就行了,保證函數(shù)體內(nèi)不會意外修改a。函數(shù)參數(shù)要做相應(yīng)的修改。像這樣:都不用額外借助一個S了。
4、當(dāng)然也可以不用初始化函數(shù),像3樓的因為在調(diào)用其他函數(shù)是都是臨時開辟的內(nèi)從空間,但傳的是指針,所以編譯時沒錯,但在連接時地址不一致導(dǎo)致了問題,只有主函數(shù)中真實的創(chuàng)建了頭指針,才不會導(dǎo)致錯誤。
5、堆棧至少應(yīng)該有個初始的init函數(shù)。具體的改動我就不幫你做了。提出幾點改進(jìn)的意見:增加一個initstack的函數(shù),里面的內(nèi)容具體就是有個頭NODE,不然的話你push是到哪個節(jié)點下呢?你這里用一個Is全局指針,個人認(rèn)為很不合理。
6、這個鏈棧應(yīng)該就是一個用鏈表弄的后進(jìn)先出的棧結(jié)構(gòu)。top指針永遠(yuǎn)指向棧的最上面的那個節(jié)點。這個函數(shù)是新加一個節(jié)點到這個棧中,首先分配了空間給s,s是要新加入這個棧的那個節(jié)點。
分享題目:c語言鏈棧函數(shù) c語言鏈棧的實現(xiàn)
網(wǎng)址分享:http://chinadenli.net/article39/dehspph.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、面包屑導(dǎo)航、網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站策劃、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)