#include#include using namespace std; #define ok 1 #define error 0 typedef struct qnode { char data; struct qnode *next; } qnode, *queen; typedef struct { queen front;//队头指针 queen reer;//队尾指针 } linkqueen; //初始化 int chushihua(linkqueen &q) { q.front = q.reer = new qnode;//生成新的节点,头和尾都插入 q.front->next = NULL;//头节点指针域置空 return ok; } //入队 int rudui(linkqueen &q, char e) //插入e为队尾元素 { queen p; p = new qnode; p->data = e; p->next = NULL; q.reer->next = p;//插入到队尾 q.reer = p;//修改尾指针 return ok; } //出队 int chudui(linkqueen &q, char e) { queen p; if (q.front == q.reer) { return error; } p = q.front->next;//指向头元素 e = p->data;//保存头元素值 q.front->next = p->next;//修改头指针 if (q.reer == p) { q.reer = q.front; } cout << e << " "; delete p; return ok; } char toujiedian(linkqueen q) { if (q.front != q.reer) { return q.front->next->data; } } int main () { linkqueen q; char e, j; int n; chushihua(q); cout << "输入入队元素个数: " << endl; cin >> n; for (int i = 0; i < n; i++) { cin >> j; rudui(q, j); } cout << endl; cout << "队头元素是:" << endl; cout << toujiedian(q) << endl; for (int i = 0; i < n; i++) { chudui(q, e); } cout << endl; return 0; }



