棧及其簡單應用

2021-09-16 14:21:02 字數 937 閱讀 5543

//棧是一種特殊的線性表

//是一種先進後出表(filo),只有棧頂元素才能被操作

//特殊:棧具有特殊的儲存訪問結構

//棧的操作:入棧:向棧中儲存資料元素(push)

出棧:從棧中取出元素(pop)

//棧頂指標(top):用來指向最後乙個入棧元素

//棧滿(上溢)不可入棧(top==size-1)

//入棧操作:top=top+1; s【top】=資料元素; 即s【++top】=資料元素;

//出棧操作:if(棧不空)

//棧空條件 top!=-1 s【top–】

//棧的簡單應用

//任意輸入乙個正整數x,輸出x的二進位制數

#include#include#define size 100

int exchangebin(int *s,int x)

else

} return top;

}void printbin(int *s,int top)

}int main()

//判斷乙個數學表示式的左右括號是否匹配

//邏輯上有乙個棧,只是通過棧頂指標記錄

#include#define max 50

int judge(char *s,int top)

if(s[i]==')')

top--;

} } else

i++;

} int x=0;

i==strlen(s)&&top==-1?x=1:x=0;

return x;

}int main()

else

}

棧及其應用

棧又稱堆疊,是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。把對棧進行運算的一端稱為棧頂,另一端稱為棧底。向乙個棧插入新元素稱為入棧或進棧,push 從乙個棧刪除元素稱為退棧或出棧,pop。因為後進棧的元素必定先出棧,所以又把棧稱為後進先出表 last in first out,...

棧操作及其應用

棧可以是順序棧,也可以是鏈棧。順序棧 1 const int maxsize 100 2 順序棧 3struct sqstack78 void initstack sqstack s 912 13int isempty sqstack s 1420 21int push sqstack s,int ...

單調棧結構及其應用

單調棧 解決乙個陣列中,對於每個數,求左邊離它最近的比它大 小 的數,右邊離它最近的比它大 小 的數,時間複雜度o n 實現。1.乙個陣列可化為乙個直方圖,陣列內數值代表該位置的高度 邊長為1的小正方形的個數 求這個直方圖可以形成的最大矩形面積 即小正方形個數 int maxrecfrombotto...