算法导论第十章例题-栈的实现

来源:互联网 发布:mac wav 转 mp3 编辑:程序博客网 时间:2024/06/05 06:50

StackNode.h

#include<iostream>using namespace std;class Stack;class StackNode{private:friend Stack;int key;StackNode *Next;public:StackNode(int num):key(num),Next(NULL){}int Getkey(){return key;}StackNode *GetNext(){return this->Next;}};


 

stack.h

#include<iostream>#include"StackNode.h"using namespace std;#define MaxLength 100class Stack{private:int length;StackNode *top;public:Stack():length(0){top=NULL;}Stack(int num):length(1){top=new StackNode(num);}~Stack(){while(top!=NULL){top=top->GetNext();delete top;}}bool IsEmpty(){if(length==0){return 1;}return 0;}int Pop(){if(IsEmpty()){cout<<"the stack is empty!"<<endl;return -1;}int temp=top->Getkey();top=top->GetNext();length--;return temp;}bool Push(int num){if(length==MaxLength){cout<<"the stack is full!"<<endl;return 0;}StackNode* p=new StackNode(num);p->Next=top;length++;top=p;}int GetLength(){return length;}bool IsFull(){if(length==MaxLength){return 1;}return 0;}};


 

mai.cpp

#include"stack.h"int main(){Stack node;int i,a[10]={1,23,4,5,6,7,8,941,12,45};for(i=0;i<10;i++){node.Push(a[i]);}for(i=0;i<10;i++){cout<<node.Pop()<<" ";}return 0;}


 

原创粉丝点击