#包含“stdio.h”
#包含" stdlib.h "
typedef char ElemType
typedef結構stnode
{
元素類型數據;
struct stnode * next
}StNode,* LinkStack
int匯文(char str[])
{
int I = 0;
char ch
StNode *sl = NULL,* p;
while ((ch = str[i++])!= '\0')
{
p =(ST node *)malloc(sizeof(ST node));
p->;數據= ch
p->;next = sl
sl = p;
}
I = 0;
而(sl!=空)
{
p = sl
ch = p-& gt;數據;
sl = sl->接下來;
免費(p);
如果(ch!= str[i++])
返回0;
}
返回1;
}
void main()
{
char string[20];
int hw
printf("輸入壹個字符串:");
gets_s(字符串);
hw =匯文(字符串);
if (hw) printf("字符串為匯文。");
else printf("字符串不是匯文。");
}
擴展數據
棧的特點是先入後出,鏈表中的頭插入方式正好滿足了我們的需求。因為頭插入法之後插入的節點位於鏈表的開頭,所以我們可以使用頭插入法插入節點,彈出節點時可以彈出鏈表中的第壹個節點,第壹個節點很容易找出來,所以我們很容易實現棧的推入和彈出操作。
棧是壹種實現數據“先入後出”的存儲結構,分為靜態棧和動態棧。靜態棧以數組的形式存儲數據,動態棧以鏈表的形式存儲數據。棧操作常用的算法有棧推和棧頂。
堆棧的創建:
在創建壹個數據結構之前,我們必須知道這個數據結構由哪些參數組成。由於棧的本質是壹個鏈表,所以它必須由許多節點組成。為了實現“FIFO”的數據結構,我們需要引入兩個參數。壹個是棧頂指針(pTop),它總是指向棧頂。壹個參數是堆棧底部指針(PBOTOM),它總是指向堆棧元素的底部。
我們知道,為了方便描述鏈表的各種操作,引入了頭節點的概念,即在每個鏈表前面加壹個頭節點,但存儲有效數據;同樣,為了實現棧的操作,我們也需要壹個不存儲任何有效數據的節點,棧底的指針始終指向該節點。