用c++编写的数据结构链式队列

本文介绍了一个使用C++实现的链式队列数据结构。主要内容包括链队列的初始化、判断是否为空、获取队首元素、元素插入及删除等操作。通过主函数演示了基本功能的调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已经运行过了

#include<malloc.h>     //头文件
#include<iostream.h>
#include<stdio.h>
#define DATATYPE1 int
typedef struct qnode
{
 DATATYPE1 data;
 struct qnode *next;
}LINKQLIST;
typedef struct
{
 LINKQLIST *front,*rear;
}LINKQUEUE;
//链队列初始化
void initlinkqueue(LINKQUEUE *q)
{
 q->front=(LINKQLIST *)malloc(sizeof(LINKQLIST));
 (q->front)->next=NULL;
 q->rear=q->front;
}
//判链队列空
int emptylinkqueue(LINKQUEUE *q)
{
 int v;
 if(q->front==q->rear)
  v=1;
 else
  v=0;
 return v;
}
//读链队列队首元素
DATATYPE1 getlinkfront(LINKQUEUE *q,DATATYPE1 v)
{
 if(emptylinkqueue(q))
 {
  cout<<"队列为空!"<<endl;
  v=NULL;
 }
 else
  v=(q->front)->next->data;
 return v;
}
//元素插入链队列
int enlinkqueue(LINKQUEUE *q,DATATYPE1 x)
{
 (q->rear)->next=(LINKQLIST *)malloc(sizeof(LINKQLIST));
 q->rear=(q->rear)->next;
 (q->rear)->data=x;
 (q->rear)->next=NULL;
 return x;
}
//从链队列中删除元素
DATATYPE1 dellinkqueue(LINKQUEUE *q)
{
 LINKQLIST *p;
 DATATYPE1 v;
 if(emptylinkqueue(q))
  {printf("队列为空./n");
  v=NULL;}
 else
  {p=(q->front)->next;
 (q->front)->next=p->next;
 if(p->next==NULL)
 q->rear=q->front;
 v=p->data;
 free(p);}
 return v;
}
//主函数
void main()
{
 int i,x;
 LINKQUEUE *q=(LINKQUEUE *)malloc(sizeof(LINKQUEUE));
 initlinkqueue(q);
 cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;
 cin>>i;
 while(i!=0)
 {
  if(i==1)
  {
   x=getlinkfront(q,x);
   if(x==0)
    cout<<"读链队列队首元素失败!"<<endl;
   else
    cout<<"读链队列队首元素成功!其值为:"<<x<<endl;
  }
   else if(i==2)
  {
   cout<<"请输入要插入的数:"<<endl;
   cin>>x;
   x=enlinkqueue(q,x);
   if(enlinkqueue(q,x))
    cout<<"插入成功!其值为:"<<x<<endl;
   else
    cout<<"插入失败!"<<endl;
  }
  else if(i==3)
  {
   if(dellinkqueue(q))
    cout<<"从链队列中删除元素成功!"<<endl;
   else
    cout<<"从链队列中删除元素失败!"<<endl;
  }
  cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;
     cin>>i;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值