本文最后更新于:5 个月前
概念
主要操作
储存结构通常由一个一维数组和一个记录栈顶元素位置的变量组成
入栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #define MaxSize <最大元素个数> struct SNode{ ElementType Data[MaxSize]; int Top; }; void Push(SNode* PtrTop,Element item) { if(PtrTop->Top==MaxSize-1){ cout << "堆栈满"; return ; }else{ PtrTop->Data[++(PtrTop->Top)]=item; return ; } }
|
出栈
1 2 3 4 5 6 7 8 9
| ElementType Pop(SNode* PtrTop) { if(PtrTop=-1){ cout << "栈为空"; return ; } else return (PtrTop->Data[PtrTop->Top--]); }
|
链表实现堆栈
栈的链式存储结构实际上是一个单链表,叫做链栈。
Top在链表头上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| struct SNode { ElementType Data; SNode* next; };
SNode* CreateStack() { SNode *PtrTop; PtrTop=(SNode*)new SNode; PtrTop->next=NULL; return PtrTop; }
SNode* IsEmpty(SNode PtrTop) { return (PtrTop->next == NULL); }
|
入栈
1 2 3 4 5 6 7 8
| void Push(ElementType item,SNode* PtrTop) { SNode* p; p=(SNode*)new SNode; p->next=PtrTop->next; p->Data=item; PtrTop->next=p; }
|
出栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ElemtType Pop(SNode* PtrTop) { SNode* FirstCell; ElementType TopElem; if(IsEmpty(PtrTop)){ cout << "堆栈为空"; return NULL; }else{ FirstCell=PtrTop->Next; PtrTop->next=FirstCell->next; TopElem = FirstCell->Data; delete FirstCell; return TopElem; } }
|