📄 queue.cpp
字号:
#include "iostream.h"
#include "string.h"
#include "conio.h"
#define SIZE 20
#define Err 0
#define Ok 1
#define cEnd "bye"
#define Pend ((X *)pchar)
#define Phead (this)
typedef unsigned char * dType;
typedef int status;
class X
{ unsigned char * pchar;
static unsigned int len;
X * next;
public:
X(){ pchar=new unsigned char[SIZE];}
~X(){ delete []pchar;}
static status isempty();
status append(unsigned char * ptr);
status del();
void clear();
friend void init(X **pp){ (*pp)=new X; (*pp)->next=*pp; (*pp)->pchar=(unsigned char *)*pp;}
friend ostream & operator <<(ostream & scout,X *obj);
friend istream & operator >>(istream & scin,X *obj);
};
unsigned int X::len=0;
status X::isempty()
{ if(len) {cout << "\n队列非空!___" << len << "__" << endl; return 0;}
cout << "\n 队列为空!" << endl;
return 1;
}
status X::append(unsigned char * ptr)
{
X * tmp=new X;
if(!(tmp)) return Err;
strcpy((char *)tmp->pchar,(char *)ptr);
Pend->next=tmp;
pchar=(unsigned char *)tmp;
cout << " 结点_" << (++len) << "_入队" << endl;
return Ok;
}
status X::del()
{ if(len>0)
{ X * tmp=Phead->next;
Phead->next=tmp->next;
cout << "\n结点_" << (len--) << "_:" << tmp->pchar << " 出队" << endl;
delete tmp;
return Ok;
}
else { cout << " 队列已清空!" << endl;
return Err; }
}
void X::clear()
{ while(del());
}
ostream & operator <<(ostream & scout,X *pobj)
{ scout << "\n\n 输出队列元素:\n" ;
X *p=pobj;
for(int i=X::len;i>0;i--)
{
p=p->next;
scout << "元素_" << i << "_:" << p->pchar << endl;
}
return scout;
}
istream & operator >>(istream & scin,X *obj)
{ unsigned char * tmp=new unsigned char[SIZE];
cout << "\n\n 输入队列元素:\n ";
scin >> tmp;
while (strcmp((char *)tmp,cEnd))
{
#ifdef debug
cout << tmp << endl;
#endif
obj->append(tmp); scin >> tmp;}
cout << " 输入结束!" << endl;
return scin;
}
void wait()
{ cout << "\n\n\n\n 任意键结束!....";
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -