我要写一个深度搜索的C++ 程序,想自己定义一个队列,不知道怎么写了。

2025-03-04 07:59:03
推荐回答(1个)
回答1:

链队
#include
using namespace std;
class queue
{
private:
int data;
queue* next;
public:
void push();
void pop(queue* front);
void empty(queue* front);
void getfront(queue* front);
//void getfrontnext(queue* front);
};
queue* front=NULL;
queue* rear=NULL;
void queue::push()
{
int number;
queue* p1,*p2,*p3;
p1=NULL;
cout<<"请输入要入队的元素(CTRL+Z结束输入):";
while(cin>>number)
{
p3=new queue;
p3->data=number;
if(p1==NULL)
{
p1=p3;
}
else
{
p2->next=p3;
}
p2=p3;
}
rear=p2;
p2->next=NULL;
front=p1;
cin.clear();
}
void queue::pop(queue* front)
{
queue* p=front;
front=front->next;
delete p;
p=NULL;
}
void queue::getfront(queue* front)
{
if(front==rear)
cout<<"队列为空!"< else
cout<<"队头元素为:"<data<}
void queue::empty(queue* front)
{
if(front==rear)
cout<<"队列为空!"< else
cout<<"队列不为空!"<}
/*void queue::getfrontnext(queue*front)
{
cout<next->data<}*/
int main()
{
queue qu;
queue* p=&qu;
int choice;
char choice_yn;
do
{
cout<<"\t1.入队\t2.退队\t3.获取队头元素\t4.判断是否为空"< cin>>choice;
switch(choice)
{
case 1:
p->push();
break;
case 2:
p->pop(front);
break;
case 3:
p->getfront(front);
break;
case 4:
p->empty(front);
break;
/*case 5:p->getfrontnext(front);
break;*/
default:
cout<<"非法输入!"< }
cout<<"是否要继续(Y/N):";
cin>>choice_yn;
}
while(choice_yn=='y'||choice_yn=='Y');
return 0;
}