继续更文。这次用类来写栈和队列,都是用数组模拟的;
以下是栈和队列的定义:
然后分别是栈和队列的类:
完整代码贴上:
栈
//使用类来定义栈 class ZHAN { public: STACK s; //栈的基本操作 void csh(STACK & s); //初始化 bool isempty(STACK & s); //判断是否为空 bool isfull(STACK & s); //判断是否为满 bool push(STACK & s,int val); //入栈 bool pop(STACK & s,int & val); //出栈 int ding(STACK & s); //取栈顶元素 int len(STACK & s); //取栈的长度(有效元素个数) void SHOW(STACK & s); //遍历栈 }; void ZHAN::csh(STACK & s) { s.top=-1; } bool ZHAN::isempty(STACK & s) { if(-1==s.top) return true; else return false; } bool ZHAN::isfull(STACK & s) { if(s.top==MAX-1) //下标从零开始 return true; else return false; } bool ZHAN::push(STACK & s,int val) { if(isfull(s)) return false; else { s.data[++s.top]=val; //top指针从-1开始 所以先++才能用 return true; } } bool ZHAN::pop(STACK & s,int & val) { if(isempty(s)) return true; else { val=s.data[s.top--]; return true; } } int ZHAN::ding(STACK & s) { if(isempty(s)) { cout<<"此栈为空栈!!"<<endl; } else { return s.data[s.top]; } } int ZHAN::len(STACK & s) { return s.top+1; } void ZHAN::SHOW(STACK & s) { int i; while(!isempty(s)) //当栈不为空 不断的出栈取值 { pop(s,i); cout<<i<<endl; } }
队列
//使用类来定义队列 class DUILIE { public: QUEUE q; //队列的基本操作 void csh(QUEUE & q); //初始化 bool isempty(QUEUE & q); //判断是否为空 bool isfull(QUEUE & q); //判断是否为满 int head(QUEUE & q); //取队头元素 bool pop(QUEUE & q,int & val); //将队头元素出队 bool push(QUEUE & q,int val); //将队尾元素入队 void SHOW(QUEUE & q); //遍历队列 }; void DUILIE::csh(QUEUE & q) { q.f=-1; q.r=-1; } bool DUILIE::isempty(QUEUE & q) { return q.f==q.r?true:false; } bool DUILIE::isfull(QUEUE & q) { if(q.r==MAX-1) return true; else return false; } int DUILIE::head(QUEUE & q) { if(isempty(q)) { cout<<"此队列为空!!"<<endl; } else { return q.data[q.f+1]; } } bool DUILIE::pop(QUEUE & q,int & val) { if(isempty(q)) return false; else { val=q.data[++q.f]; return true; } } bool DUILIE::push(QUEUE & q,int val) { if(isfull(q)) return false; else { q.data[++q.r]=val; return true; } } void DUILIE::SHOW(QUEUE & q) { if(isempty(q)) cout<<"此队列为空!!"<<endl; else { for(int i=q.f+1; i<=q.r; i++) cout<<q.data[i]<<" "; cout<<endl; } }
实验效果如如下:
老规矩,有错改之,无则加勉。
一起学习,一起进步。
去吃饭了哈哈。
因为我的代码是贴上去的 而不是写的 居然说不足150字不让发布
以下是凑字数的,忽略忽略;
山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?