詳解C語言之堆疊

2022-09-21 14:09:08 字數 1458 閱讀 2988

目錄

a.堆疊是一種特殊的線性表

b.堆疊的資料元素以及資料元素間的邏輯關係和線性表完全相同,其不同點是:線性表允許在任意位置插入和刪除資料元素,但堆疊只允許在固定一端進行插入和刪除資料元素,所以棧又稱為「先進後出」(filo)或「後進先出」(lifo)的線性表

c.堆疊中允許進行插入和刪除資料元素的一端稱為棧頂,另一端程式設計客棧稱為棧底

d.堆疊的插入操作通常稱為進棧或入棧;堆疊的刪除操作通常稱為出棧或退棧

#include 程式設計客棧.h>

typedef int datatype;

#define maxstacksize 64

typedef struct

seqstack;

//初始化

void stackinit(seqstack *s)

//判斷是否棧空

int stackisempty(seqstack s)

//入棧

int stackpush(seqstack *s, datatype x)

else }

//出棧

int stackpop(seqstack *s, datatype *x)

else }

//獲取棧頂元素

int stackgettop(seqstack s, datatype *x)

else }

int main()

system("pause");

return 0;

}#include

#include

typedef int datatype;

typedef struct snode

lsnode;

//初始化

void stackinit(lsnode **top)

//判斷堆疊是否非空

int stackisempty(lsnode *top)

//入棧

void stackpush(lsnode *top, datatype x)

//出棧

int stackpop(lsnode *top, datatype *x)

top->next = p->next;

*x = p->data;

free(p);

return 1;

}//獲取棧頂元素

int stackgettop(lsnode *top, datatype *x)

*x = p->data;

return 1;

}//釋放記憶體空間

void stackdestroy(lsnode **top)

*top = null;

}int main()

stackdestroy(&top);

system("pause");

return 0;

}本文標題: 詳解c語言之堆疊

本文位址:

C語言之堆疊 回文數

問題描述 123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。輸入乙個正整數n,程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 輸入格式 輸入一行,包含乙個正整數n。輸出格式 按從小到大的順序輸出滿足條件的整數,每個整數佔一行。樣例輸入 52樣例輸出 899998 989...

c語言之堆疊溢位問題

對於c來說,函式呼叫,系統要做三個工作 這裡多提一下,關於陣列作為形參呼叫函式時,為什麼需要連同陣列長度一起傳進來?這裡是因為,陣列作為引數傳遞的本質只是乙個指標,也就是乙個位址,編譯器並不關心這個位址後邊有多少有用資料,編譯器只看得到指標所指的資料。所以在被呼叫函式中,無法直接知道這個陣列的長度,...

C語言之typedef詳解

typedef可以看作type define的縮寫,顧名思義就是型別定義,也就是說它只是給已有的型別重新定義了乙個方便使用的別名,並沒有產生新的資料型別。typedef的使用與巨集定義define有些許的相似,但兩者又有以下不同 1.與 define不同,typedef給出的符號名稱僅限於對型別,而...