//棧是一種特殊的線性表
//是一種先進後出表(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...