#包含?& ltconio.h & gt
#包含?& ltstdlib.h & gt
#定義?elemType?int/*?鏈接棧元素數據類型?*/
#定義?SNODE_SIZE?sizeof?(結構?sNode)/*?鏈接棧節點的空間大小是多少?*/
#定義?地位?int/*?狀態變量?*/
#定義?溢出?-1 /*?內存溢出狀態代碼?*/
#定義?錯誤?0 /*?錯誤狀態代碼?*/
#定義?好嗎?1 /*?正確的狀態代碼?*/
/*?鏈棧節點存儲結構?*/
typedef?結構?斯諾德?{
elemType?數據;
結構?斯諾德?*下壹個;
}?斯諾德?* sNodePtr
/*?鏈棧存儲結構?*/
typedef?結構?linkStack?{
sNodePtr?頂;?/*?棧頂指針?*/
}?linkStack
/*?初始化?*/
/*?操作結果:用前導節點構造壹個空鏈棧s?*/
虛空?initStack?(linkStack?*S)?{
s-& gt;頂級?=?(sNodePtr)?馬洛克。(s node _ SIZE);?/*?生成壹個頭節點,棧頂指針指向這個頭節點?*/
如果?(!s-& gt;top)?/*?內存分配失敗?*/
退出?(溢出);
s-& gt;top-& gt;下壹個?=?NULL
}
/*?摧毀?*/
/*?初始條件:鏈棧s已經存在。操作結果:銷毀鏈棧S?*/
虛空?destroyStack?(linkStack?*S)?{
sNodePtr?p,?q;
p?=?s-& gt;頂;?/*?p指向S的頭節點?*/
什麽時候?(p)?{
q?=?p-》;接下來;?/*?q指向p的下壹個節點?*/
免費?(p);?/*?回收P指向的節點?*/
p?=?q;?/*?p移動到下壹個節點?*/
}?/*?直到沒有下壹個節點?*/
}
/*?空的?*/
/*?初始條件:鏈棧s已經存在。操作結果:將S重置為空堆棧?*/
虛空?clearStack?(linkStack?*S)?{
sNodePtr?p,?q;
p?=?s-& gt;top-& gt;接下來;?/*?p指向堆棧的第壹個節點?*/
什麽時候?(p)?{
q?=?p-》;接下來;?/*?q指向p的下壹個節點?*/
免費?(p);?/*?回收P指向的節點?*/
p?=?q;?/*?p移動到下壹個節點?*/
}/*?直到沒有下壹個節點?*/
s-& gt;top-& gt;下壹個?=?NULL
}
/*?確定鏈接棧是否為空?*/
/*?初始條件:鏈棧s已經存在。運算結果:如果s是空鏈棧,則返回TRUE,否則返回FALSE?*/
地位?stackIsEmpty?(linkStack?*S)?{
回歸?s-& gt;top-& gt;下壹個?==?NULL
}
/*?進入堆棧*/
/*?操作結果:在s棧頂插入新元素e?*/
地位?推?(linkStack?*S,?elemType?e)?{
sNodePtr?p;
p?=?(sNodePtr)?馬洛克。(s node _ SIZE);?/*?創建新節點?*/
如果?(!p)?/*?內存分配失敗?*/
退出?(溢出);
p-》;數據?=?e;
p-》;下壹個?=?s-& gt;top-& gt;接下來;?/*?將新節點鏈接到原始棧頂?*/
s-& gt;top-& gt;下壹個?=?p;?/*?棧頂指向新節點?*/
}
/*?打印堆棧內容?*/
/*?初始條件:鏈棧s已經存在。操作結果:當堆棧不為空時,打印堆棧內容並返回OK,否則返回ERROR?*/
地位?printStack?(linkStack?*S)?{
sNodePtr?p;
如果?(stackIsEmpty?(S)?{
看跌期權。(“那個?堆棧?是嗎?空的!?");
回歸?錯誤;
}
p?=?s-& gt;top-& gt;接下來;
什麽時候?(p)?{
printf?(“%d\t“,?p-》;數據);
p?=?p-》;接下來;
}
普特查爾?(‘\ n‘);
回歸?好的。
}
int?主要?(void)?{
linkStack?s;
elemType?e;?
elemType?壹、?b,?c,?d;
答?=?1;?b?=?2;?c?=?3;?d?=?4;
initStack?(& amps);
推?(& amps,?a);
推?(& amps,?b);
推?(& amps,?c);
推?(& amps,?d);
printf?(“S:\ t“);
printStack?(& amps);
普特查爾?(‘\ n‘);
看跌期權。(“清楚嗎?那個?stack“);
clearStack?(& amps);
printf?(“S:\ t“);
printStack?(& amps);
destroyStack?(& amps);
getch?();?/*?屏幕暫留?*/
回歸?0;
}如果您有任何問題,請點擊頭像聯系我。