以前在写程序的时候,觉得c语言的函数形参总是给我了不便,因为他修改的只是实参的一个样本,实参并不受影响,如果想实参也随之改变可以使用指针,最近看了一个小程序,却巧妙地应用了实参不受影响这一点:
在c++里我们可以为队列定义如下
class Queue
{
private:
int front, rear;
public:
void enQueue(type x);
void deQueue();
type getFront();
bool isEmpty();
}
如果用这个类实现判断两个队列是否相等,可能会比较麻烦,因为判断相等不能改变原来的结构,但是这个类没给什么成员可以简单的实现这一点。
但如果有这样一个c结构体
struct Queue
{
int front ,rear;
}
使用这个结构体的函数有
void enQueue(Queue,type x);
void deQueue(Queue);
type getFront(Queue);
bool isEmpty();
现在可以轻松地实现判断相等操作
bool equal()
{
bool flag = true;
while( ! isEmpty(Q1) && ! isEmpty(Q2))
{
if(getFront(Q1) != getFront(Q2))
flag = false;
}
if(isEmpty(Q1) || isEmpty(Q2) || flag == false)
return false;
else
return true;
}
注意这里没有更改原队列,equal函数操作的只是其副本而已