C語言學習 棧

2021-09-28 19:53:19 字數 1121 閱讀 5517

棧的定義:僅允許在表尾插入或者刪除的線性表

棧的特點:先進後出或者後進先出

棧是線性表所以其儲存結構也可分為順序儲存結構和鏈式儲存結構

需要先知道棧的大小,定義後無法再改變棧的大小

與鍊錶類似

1.結構體定義時,不分配空間,例如上述的data[max_size]陣列和變數top是不分配具體的記憶體,那什麼時候才分配記憶體呢?

在定義結構體變數的時候記憶體才分配空間

sqstack stack; 或者sqstack *r;

2.結構體變數的大小是根據結構體位元組單位最大的資料型別所佔位元組計算的,通俗來說就是以最大的單位標準去衡量每乙個資料,位元組數不夠的編譯器自動補齊。例如:

typedef struct stack

sqstack;

我們直到char只佔乙個位元組,int佔4個位元組,而結構體的大小是8位元組,可以用sizeof()函式輸出出來。

3.結構體作為函式引數,採取的是值傳遞方式,將結構體所佔的所有單元全部傳給形參,並且形參必須是同一型別的結構體變數,在使用的時候,形參會自動建立乙個結構體變數

作為原結構體的副本,並且也要佔據記憶體,且在呼叫期間如果修改形參結構體成員的值,

修改是無效的!!!!

但是指標作為實參,傳遞給形參,這時候產傳遞的是結構體位址,修改有效

下面是採用直接定義大小的棧的相關操作實現

void init_stack(sqstack *s)

int push(sqstack* s, int data)

int pop(sqstack *s,int *tem)

void print_stack(sqstack *s)

}運用棧的特點可以實現簡單解決一些實際的問題

例如進製的轉化,例如從鍵盤獲得乙個10進製的數,轉換為8進製的數,並列印出來。

void main()

print_stack(&stack);

}

C語言學習(1) 棧記憶體

程式和資料都儲存在儲存器中。儲存器又分為易失儲存器 記憶體 和非易失儲存器 硬碟 對於c c 程式設計人員而言,記憶體是最重要的操作物件。計算機的記憶體被編組為 位址 值 這樣的關係對。現代計算機把記憶體分為三種型別 棧記憶體 堆記憶體 程式記憶體。本文重點關注棧記憶體。學過資料結構都知道,棧記憶體...

C語言學習

c語言學習 2013 3 26 1 編寫strcat s,t 函式,功能 將t指向的字串複製到s指向的字串的尾部。程式設計思路 1 通過while迴圈找到字串s的結束符。2 從找到的結束符開始將t複製到s,同時移動二者的指標。2 編寫函式strend s,t 如果字串t出現在字串s的尾部,該函式返回...

c語言學習

今天總結一些c 語言方面的知識 變數的概念 其值在作用域內可以改變的量稱為變數。乙個變數應該有乙個名字,並在記憶體中佔據一定儲存空間。區域性變數和全域性變數 區域性變數是在函式內作定義說明的,其作用域僅限函式內,離開該函式再使用這種變數是非法的。全域性變數也稱為外部變數,是在函式外部定義的變數,它不...