#include<iostream>
using namespace std;
struct Node {
int data;
Node *next;
};
class Circle {
public:
Circle(int a[], int n);
void Show(int n);// 显示,n为要显示的数据个数
void Entry(int n);//入队函数,n为要添加的节点的值,为整型
void Exit();// 出队函数
private:
Node *first, *r, *s;
};
Circle::Circle(int a[], int n)
{
// 使用尾插法来构建链表
first = new Node;// 生成头结点,并给头结点赋值
first->data = a[0];
r = first;//尾指针初始化
for (int i = 1;i < n;i++)
{
s = new Node;
s->data = a[i];
r->next = s;
r = s;
}
r->next = first;// 将尾指针指向头结点,形成循环链表
}
void Circle::Show(int n)
{
Node *t = first;
for (int i = 0;i < n;i++)
{
cout << t->data<<" ";
t = t->next;
}
}
void Circle::Entry(int n)
{
s = new Node;
s->data = n;
r -> next = s;
r = s;
r->next = first;
}
void Circle::Exit()
{
Node *q = first;
if (r == first)
delete first;
else
{
first = first->next;
r->next = first;
delete q;
}
}
int main()
{
int list[7] = { 3,7,4,8,5,2,1 };
Circle circle(list, 7);
cout << "原先的队列为:" << endl;
circle.Show(7);
cout << "加入11之后的队列为:" << endl;
circle.Entry(11);
circle.Show(8);
cout << "出队一个元素之后的队列为:" << endl;
circle.Exit();
circle.Show(7);
cout << endl;
system("pause");
return 0;
}
循环队列--单链表--C++
最新推荐文章于 2022-07-24 22:43:30 发布