#include<iostream>
#include<queue>
using namespace std;
struct Node{
int a;
Node* parent;
};
queue<Node> Queue;
int main(){
Node array[4];
for(int i=0;i<4;i++){
array[i].a=i;
if(i==0)
array[i].parent=NULL;
else
array[i].parent=&array[i-1];
Queue.push(array[i]);
}
Queue.pop(); //即使这里使用pop操作,Node结构中的parent指针仍然是有效的
cout<<"Queue size="<<Queue.size()<<endl;
Node tmp=array[3];
while(tmp.parent!=NULL){
cout<<tmp.a<<endl;
tmp=*tmp.parent; //"."运算符的优先级高于"*"
}
cout<<"**********************"<<endl;
Node t;
t.a=5;
t.parent=&array[3];
Queue.push(t);
// while( ! Queue.empty()){
//
// cout<< (Queue.front()).a<<endl;
// Queue.pop();
// }
cout<<"**********************"<<endl;
t.a=6; //在Queue外部改变元素的值,容器内的元素不受影响
t.parent=&array[2];
// while( ! Queue.empty()){
//
// cout<< (Queue.front()).a<<endl;
// Queue.pop();
// }
return 0;
}