《C语言实现进栈和出栈.docx》由会员分享,可在线阅读,更多相关《C语言实现进栈和出栈.docx(3页珍藏版)》请在三一办公上搜索。
1、C语言实现进栈和出栈使用C+中STL的stack,只有C+中有,C标准库没有STL。 程序: #include #include using namespace std; stacks; int main int a,b; scanf(%d,&a); s.push(a); printf(%dn,s.top); s.pop; return 0; 方法二: 自己写程序: #include const static int g_iStackSize = 100; /定义栈长度,为100 static int g_iStackPoint = -1; /初始化栈指针为-1,也就是栈里一个元素都没有 /定
2、义栈元素数据结构,可以扩展为任意类型数据 typedef struct tagStackData int iData; /栈元素的数据,整型 stStackData,* pstStackData; /栈只保存栈元素指针 pstStackData g_arrStackg_iStackSize;/这个就是栈体了,一个长度为stacksize的数组 /压元素入栈,可以返回栈指针当前位置 /param data 压入栈的元素 /return int 为100时就是满了 int push(const pstStackData data) if(g_iStackPoint = g_iStackSize)/
3、也就是栈满了 /提示栈满 printf(stack is full.n); /返回栈指针位置 return g_iStackPoint; else/栈还没满 /压元素入栈 g_arrStackg_iStackPoint+1 = data; /移动栈指针 +g_iStackPoint; /返回栈指针位置 return g_iStackPoint; /弹出元素 /param outStackPoint输入型参数,输出栈指针位置,为-1时说明为空 /return pstStackData 弹出的栈数据 pstStackData pop(int& outStackPoint) if(g_iStackPoint iData = iInput; /压栈 iStackPoint = push(pData); while(-1 != iStackPoint)/当栈指针位置不在栈尾 /依次弹出栈里的元素 pstStackData pData = pop(iStackPoint); printf(pop value:%d;n, pData-iData); delete pData; system(pause);/让命令窗口暂停,观察输出3 return 0; 调试: