問題
一、描述:在建立順序棧時,在stack.c定義乙個函式用於建立順序棧,把棧置空,在新增乙個元素進棧
//建立乙個棧
seqstack * creat_stack()
在main.c裡主函式呼叫,建立乙個棧,push函式將3進棧
#include#include"stack.h"
int main()
push函式
//進棧
//首先判斷棧是否滿了
status push(seqstack *s,int x)
else
return true;
}
然而,這個棧似乎,沒有如我所願是空的,棧頂指標top不是-1,但明明在建棧的函式裡已經置-1了啊。
我認為是因為兩個不同原始檔,全域性變數與區域性變數的問題,應該加上乙個extern外部變數。查了資料似乎,這樣是不行的。
我在想就不是沒分配一片記憶體,那我每次申請一片不就完了,於是建棧函式如下:
//建立乙個空棧
seqstack * creat_stack()
我們看看效果,可以看到已經解決了
同時想到另乙個問題,我這樣不停的申請記憶體,用了,又不free它,電腦記憶體是否會受影響呢?
答案:函式結束後不會釋放,程式結束後會由系統釋放,相當於在堆區人為開闢了靜態區域(占用的是堆區的空間),如果有重複分配(迴圈),會不斷占用記憶體,直到程式結束。
問題三、呼叫以前的順序表的結構體,出現重複定義錯誤
答案:linkqueue.c檔案和linkqueue.**件重複呼叫,linklist.**件
#include"linklist.h" 在乙個地方呼叫就行。
C語言資料結構攔路虎 變數與記憶體
c語言的規則是 變數必須先定義才能使用。對變數的定義其實就是請求計算機,讓計算機將記憶體中的某個或幾個單元分配給你定義的變數使用。把位址為2000的記憶體單元,起個名字叫 i 怎麼知道變數的位址值呢用 i。我又想到指標了,a,a放的就是位址值。a i,a我就能取到i的值了,也就是記憶體位址為2000...
新人做跨境電商常見的攔路虎 你遇到幾個?
這裡說的缺錢,不是說連幾百塊都拿出不的春態,而是指相對於大賣來說,資金實力不夠雄厚,對進貨 營銷推廣等費用需精打細算的狀態。店鋪缺貨,意味著賣家進貨要更精細些,對店內所有產品都進貨可能做不到,也正如此,所以當有零庫存的產品成交時,我們向 商或廠商下單,往往也因為對方突然無貨或不再生產導致有單發不出,...
資料結構 C語言 約瑟夫問題
一 問題描述 約瑟夫問題 乙個旅行社要從n個旅客中選出一名旅客,為他提供免費的環球旅行服務。旅行社安排這些旅客圍成乙個圓圈,從帽子中取出一張紙條,用上面寫的正整數m作為報數值。遊戲進行時,從第s個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人被淘汰出列,然後從他順時針方向上的下乙個人...