队列的实现 插入 删除 打印

队列的建立,插入,删除和打印!


#include <iostream>
using namespace std;

//
typedef struct student
{
	int data;
	student* next;
}node; 

typedef struct linkqueue
{
	node *first,*rear;
	linkqueue()
	{
		first = rear = NULL;
	}
}queue;
//插入在队列的尾部
queue *insert(queue *HQ,int x) 
{
	node *s;		//创建新的节点
	s = new node(); 
	s->data = x;
	s->next = NULL;
	if (HQ->rear == NULL)  //第一次创建时,队列为空
	{
		HQ->first = s;
		HQ->rear = s;
	}
	else
	{
		HQ->rear->next = s;
		HQ->rear = s;
	}
	return HQ;
}
queue *del(queue *HQ) 			//删除节点 
{
	node *p = NULL;
	int x;
	if (HQ->first == NULL)         //为空队列,打印溢出
	{
		printf("\n 溢出\n");
	}
	else
	{
		x = HQ->first->data;
		p = HQ->first;
		if (HQ->first == HQ->rear)   //
		{
			HQ->first = NULL;
			HQ->rear = NULL;
		}
		else
		{
			HQ->first = HQ->first->next;
			free(p);
		}
	}
	return (HQ);
}

int  length(queue *HS)    //计算队列的长度
{
	int n = 0;
	node *p = HS->first;
	if (p == NULL)
	{
		printf("queue is empty!\n");
		return false;
	}
	while(p != NULL)
	{
		p = p->next;
		n++;
	}
	return n;
}
queue * print(queue *HQ)  //打印队列
{
	node * pTemp = HQ->first;
	if (pTemp == NULL) 
	{
		printf("queue  is  empty!");
	}
	while(pTemp != NULL)
	{
		printf("%d\n",pTemp->data);
		pTemp = pTemp->next;
	}
	return HQ;
}

void main()
{
	queue *HQ;
	HQ = new queue();
	HQ = insert(HQ,1);
	HQ = insert(HQ,2);
	HQ = insert(HQ,3);
	HQ = insert(HQ,4);
	HQ = insert(HQ,5); //给队列中插入5个元素
	print(HQ);	   //打印队列	
	cout<<"************************************ "<<endl;
	HQ = del(HQ);   	//删除队列
	HQ = print(HQ);		//打印删除后的队列

	cout<<"************************************"<<endl;

	cout<<length(HQ)<<endl;  //输出//删除后队列的长度
	system("pause");
}



运行的结果:





  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值