c++用类实现链队列/顺序表
本篇文章实现相对较简单,但也是类实现,方法大致与结构体相似
#include <iostream>
using namespace std;
#define max_size 10
class Node//节点
{
public:
Node *next;
int data;
};
class List
{
public:
List(int &n);
~List();
void PopData(int &a);
void TraveList();//遍历链表
private:
Node *front;
Node *rear;
};
List::List(int &n)
{
Node *p;
p = new Node;
p->next = NULL; //队首
this->front = p;
this->rear = p;
int i = n;
int a;
while (i--)
{
Node *p;
p = new Node;
p->next = NULL;
cout<<"请输入要插入的数据"<<endl;
cin>>a;
p->data = a;
rear->next = p;
rear = p;
}
}
List::~List(){
Node *p=this->front->next;
while(front!=rear)//若front==rear,队列为空
{
cout<<"正在析构函数里释放"<<endl;
delete front;
p=p->next;
}
}
void List::TraveList()
{
Node *p=this->front->next;
while(p)
{
cout<<p->data<<endl;
p=p->next;
}
}
void List::PopData(int &a)
{
Node *p;
p = this->front->next; //p指向将要删除的节点
a = p->data;//取到将要删除数据
this->front->next = p->next; //将中间节点丢掉
if (p == this->rear)
this->rear = this->front;
delete p;
}
void text01(){
int n,a;
cout<<"请输入要初始化队列的长度"<<endl;
cin>>n;
if(n>max_size)
{
cout<<"长度大于设定最大长度"<<endl;
return ;
}
List list01(n);
list01.TraveList();
list01.PopData(a);
cout<<"你删除的数据是"<<a<<endl;
cout<<"现在你的队列所有元素为"<<endl;
list01.TraveList();
}
int main()
{
text01();
system("pause");
return 0;
}
☟☟☟
结构体型链队列