#include<stdio.h>
#include <iostream>
using namespace std;
template<class T>
class MyQueue{
private:
struct Node{
T value;
Node *next;
};
unsigned int num;
Node *Q_first;
Node *Q_last;
public:
MyQueue();
~MyQueue();
void Q_push(T v);
int Q_pop(T &v);
void Q_clear(void);
bool Q_empty(void);
int Q_size(void);
};
template<class T>
MyQueue<T>::MyQueue()
{
num = 0;
Q_first = NULL;
Q_last = NULL;
}
template<class T>
MyQueue<T>::~MyQueue()
{
T v;
while (!Q_empty()){
Q_pop(v);
}
}
template<class T>
void MyQueue<T>::Q_push(T v)
{
Node *temp = new Node;
temp->value = v;
temp->next = NULL;
if (!Q_size()){
Q_first = temp;
Q_last = temp;
}
else{
Q_last->next = temp;
Q_last = temp;
}
this->num++;
}
template<class T>
int MyQueue<T>::Q_pop(T &v)
{
int ret = -1;
if (!Q_size()){
cout << "My Queue is Null!\r\n" << endl;
}
else{
Node *temp = Q_first;
v = temp->value;
Q_first = temp->next;
delete temp;
this->num--;
ret = 0;
}
return ret;
}
template<class T>
int MyQueue<T>::Q_size(void)
{
return num;
}
template<class T>
bool MyQueue<T>::Q_empty(void)
{
return (num==0);
}
template<class T>
void MyQueue<T>::Q_clear(void)
{
while (!Q_empty()){
Q_pop();
}
}
int main()
{
MyQueue<float> queue;
queue.Q_push(1.2f);
queue.Q_push(2.2f);
float v;
queue.Q_pop(v);
printf("12345!, v:%f\r\n", v);
queue.Q_pop(v);
printf("12345!, v:%f\r\n", v);
queue.Q_pop(v);
printf("12345!, v:%f\r\n", v);
return 0;
}
c++,模板、链表的简单使用
最新推荐文章于 2024-01-26 21:25:30 发布