#include<iostream> #include<fstream> #include<stdlib.h> using namespace std;
typedef struct LinkNode{ char data; struct LinkNode *next; } LinkNode;
typedef struct { LinkNode *front , *rear; } LinkQueue;
void InitQueue(LinkQueue &Q) { Q.front = Q.rear = new LinkNode; if(!Q.front) exit(0); Q.front->next=NULL; }
bool IsEmpty(LinkQueue &Q) { if(Q.front==Q.rear) return true; else return false; }
void EnQueue(LinkQueue &Q, char e) { LinkNode *s = new LinkNode; s->data=e; s->next=NULL; Q.rear->next=s; Q.rear=s; }
char DeQueue(LinkQueue &Q) { if (IsEmpty(Q)){ cout<<"队列已为空"<<endl; exit(0); }
LinkNode *p = Q.front->next; char e=p->data; Q.front->next = p->next; if(Q.rear==p) Q.rear=Q.front; delete p; return e; }
char GetHead(LinkQueue &Q) { if (Q.front != Q.rear) { LinkNode *p = Q.front->next; return p->data; }
}
void TraverseQueue(LinkQueue &Q) { LinkNode *p = Q.front->next;
while (p != NULL) { cout<<p->data; p = p->next; } }
int main() { LinkQueue Q; int n;char e;
InitQueue(Q);
cout<<"输入队列的长度:"<<endl; cin>>n; cout<<"输入队列的元素:"<<endl; for (int i = 1; i <= n; i++){ cin>>e; EnQueue(Q, e); }
cout<<"现在队首元素是:"; cout<<GetHead(Q)<<endl;
cout<<"遍历队列结果为:"; TraverseQueue(Q);
cout<<endl<<"请输入要插入的元素的数值:"; cin>>e; EnQueue(Q,e);
cout<<endl<<"遍历队列结果为:"; TraverseQueue(Q);
cout<<endl<<"执行删除动作,被删元素是:"<<DeQueue(Q)<<endl;
cout<<"遍历队列结果为:"; TraverseQueue(Q); cout<<endl;
if (IsEmpty(Q)) cout<<"队列为空"<<endl; else cout<<"队列非空"<<endl;
return 0;
}
|