队列自己定义:判断队列是否为空、进队、出队等
(其实和queue头文件下操作及使用大致相同)
栈也做了自己定义的但是与stack头文件定义方式不同,我也找不到那个代码了,就略过吧。
#include <iostream>
//#include <queue>
using namespace std;
typedef int Elementtype;
struct celltype {
Elementtype element;
celltype *next;
};
struct QUEUE {
celltype *front;
celltype *rear;
};
void MakeNULL(QUEUE &Q) {
Q.front = new celltype;
Q.front->next = NULL;
Q.rear = Q.front;
}
bool Empty(QUEUE Q) {
if (Q.front == Q.rear)
return true;
else
return false;
}
Elementtype Front(QUEUE Q) {
if (Q.front->next)
return Q.front->next->element;
else
return 1;
}
void EnQueue(Elementtype x, QUEUE Q) {
Q.rear->next = new celltype;
Q.rear = Q.rear->next;
Q.rear->element = x;
Q.rear->next = NULL;
}
void DeQueue(QUEUE Q) {
celltype *tmp;
if (Empty(Q))
cout << "Queue is empty!" << endl;
else {
tmp = Q.front->next;
Q.front->next = tmp->next;
delete tmp;
if (Q.front->next == NULL)
Q.rear = Q.front;
}
}
int main() {
QUEUE Q;
MakeNULL(Q);
Elementtype a[5] = {1, 2, 3, 4, 7};
for (int i = 0; i < 5; i++) {
EnQueue(a[i], Q);
}
cout << Front(Q) << endl;
// while(!Empty(Q))
// {
// cout<<Q.front
// }
//
return 0;
}
主要参考: 《数据结构与算法》(第五版)张岩
《数据结构考研复习指导》(王道)