Cho bạn code hàng đợi bằng con trỏ hay danh sách liên kết cũng được, bonus thêm cái menu hoành tráng.
Quan trọng ở đây là hiểu cái queue nó chạy như thế nào chứ xin code về chạy chỉ giải quyết được yêu cầu của thầy giáo thôi.
Code:
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
typedef struct node
{
int pt;
node *link;
} queue;
int taods(queue **T,int &front,int &rear)
{
front=rear=-1;
(*T)=NULL;
}
queue *local(int n,queue *T)
{
queue *P;
P=T;
int dem=1;
while((P!=NULL)&&(dem<n))
{
dem++;
P=P->link;
}
return P;
}
void nhap(queue **T,int x,int &front,int &rear)
{
queue *p,*q;
p=new queue;
p->pt=x;
if(*T==NULL)
{
p->link=(*T);
(*T)=p;
front=0;
rear++;
}
else
{
q=local(rear+1,*T);
p->link = q->link;
q->link = p;
rear++;
}
}
void xuat(queue **T,int front,int rear)
{
queue *p;
p=*T;
while(p!=NULL &&(front<=rear))
{
printf("%d ",p->pt);
front++;
p=p->link;
}
printf("\n");
}
void xoa(queue **T,int &front,int &rear)
{
if(front>rear)
taods(&*T,front,rear);
else
{
queue *p;
p=(*T);
printf("\nDa xoa: %d\n",p->pt);
(*T)=p->link;
delete p;
front++;
}
}
void inmenu()
{
printf("----------------------------Menu---------------------\n|\n");
printf("|m.Menu\n");
printf("|q.Quit\n");
printf("|1.Nhap hang doi\n");
printf("|2.Xuat hang doi\n");
printf("|3.Xoa 1 phan tu\n");
printf("|4.Chen 1 phan tu\n|\n");
printf("----------------------------Menu---------------------\n");
}
main()
{
queue *T;
int front,rear;
int x,so,check=0;
char c;
taods(&T,front,rear);
inmenu();
while(c!='q')
{
c=getch();
switch(c)
{
case 'm':
inmenu();
break;
case 'q':
c='q';
break;
case '1':
{
check=1;
int dk=1;
char y;
while(dk==1)
{
printf("\nNhap pt: ");
cin>>x;
nhap(&T,x,front,rear);
printf("\nNhap tiep y/n: ");
cin>>y;
if(y=='y')
dk=1;
else
dk=0;
}
}
break;
case '2':
if(check!=1)
printf("\nChua nhap ds, quay lai buoc 1!");
else
xuat(&T,front,rear);
break;
case '3':
if(check!=1)
printf("\nChua nhap ds, quay lai buoc 1!");
else if(front<=rear)
xoa(&T,front,rear);
else
printf("\nHet roi, xoa j nua. error bay gio !");
break;
case '4':
if(check!=1)
printf("\nChua nhap ds, quay lai buoc 1!");
else
{
printf("\nChen phan tu: ");
scanf("%d",&so);
nhap(&T,so,front,rear);
printf("\nDa chen !\n");
}
break;
default:
break;
}
}
}
Bookmarks