C語言資料結構攔路虎 遇到的問題

2021-09-12 01:16:47 字數 1355 閱讀 3717

問題

一、描述:在建立順序棧時,在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的人被淘汰出列,然後從他順時針方向上的下乙個人...