當前位置:成語大全網 - 書法字典 - C語言清除堆棧(struct sqstack * mystack)。

C語言清除堆棧(struct sqstack * mystack)。

#包含?& ltstdio.h & gt

#包含?& 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;

}如果您有任何問題,請點擊頭像聯系我。