队列的实现---数据结构学习(五)

来源:互联网 发布:sql工程师培训 编辑:程序博客网 时间:2024/05/29 02:13

队列是一种特殊的链式存储结构,具有“先进先出”的特点,对队列进行操作,只能在队列的尾部(rear)进行插入操作,在队列的头部(front)进行删除。判断队列是否为空的条件是rear=front。生活中队列思想的应用广泛存在,例如排队等待服务,数据处理等。

下面,将简单实现队列的初始化、插入删除以及输出队列元素的操作。实现代码如下。

#include<iostream>
using namespace std;
struct lists
{
int data;
lists *next;
};
struct point
{
lists *front;
lists *rear;
int size;
};
point s;
void init()
{
lists *p=(lists*)new lists, *news;
int x, n;
cout << "输入队列长度:";
cin >> n;
for (int i = 1; i <= n; i++)
{
news = (lists*)new lists;
cout << "输入第" << i << "个元素:";
cin >> x;
news->data = x;
news->next =NULL;
if (i == 1)
{
p = news;
s.front = p;
s.rear = s.front;
}
else
{
p->next = news;
p = news;
s.rear = p;       //尾指针指向最后一个元素而不是最后一个元素的下一元素;
}
}
}
void insert()
{
lists *news=(lists*)new lists;
int x;
cout << "要插入的数字是:";
cin >> x;
news->data = x;
news->next = NULL;
s.rear->next = news;
s.rear = news;
}
void dele()
{
lists *p;
p = s.front;
s.front = p->next;
cout << "删除队列第一个元素:";
cout << p->data<<endl;
free(p);
}
void output()
{
lists *p;
p = s.front;
cout << p->data<<" ";
do
{
p = p->next;
cout << p->data << " ";

} while (p->next!=NULL);
cout << endl;
}
int main()
{
init();
cout << "输出队列:";
output();
insert();
cout << "输出插入新元素后的队列:";
output();
dele();
cout << "删除头结点后的队列是:";
output();
return 0;
}

0 0