继续更文。这次用类来写栈和队列,都是用数组模拟的;
以下是栈和队列的定义:
然后分别是栈和队列的类:
完整代码贴上:
栈
//使用类来定义栈
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字不让发布
以下是凑字数的,忽略忽略;
山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?