链栈
2014-09-29 20:45
113 查看
#include<iostream> using namespace std; typedef int ElemType; typedef struct node { ElemType data; struct node *pNext; }Node,*pNode; void InitStack(pNode pS)//链栈无头节点,pS始终指向栈顶元素 { pS = NULL; return; } bool StackEmpty(pNode pS) { if (!pS) return true; else return false; } bool GetTop(pNode pS, ElemType &e) { if (!pS) return false; e = pS->data; return true; } void Push(pNode &pS, ElemType e) { pNode pNew = new Node; pNew->data = e; pNew->pNext = pS; pS = pNew; pNew = NULL; return; } bool Pop(pNode &pS, ElemType &e) { if (!pS) return false; else{ e = pS->data; pNode pTem = pS; pS = pS->pNext; delete pTem; pTem = NULL; return true; } } void Traverse(pNode pS) { while (pS) { cout << pS->data << " "; pS = pS->pNext; } cout << endl; return; } int main(void) { pNode pS=NULL; ElemType e = 0; InitStack(pS); Push(pS, 1); Push(pS, 2); Push(pS, 3); Push(pS, 4); Push(pS, 5); Push(pS, 6); Traverse(pS); GetTop(pS, e); cout <<e<<endl; Pop(pS, e); GetTop(pS, e); cout << e << endl; Traverse(pS); return(0); }