数据结构 队列的基本操作

简单的数据结构中队列的基本操作,希望对初学者有所帮助。
(个人认为还是挺详细的、且简明易懂,这是我学数据结构是老师布置实验报告作业)

#include<stdio.h>
#include<stdlib.h>
typedef struct QNode{
  int data;
  struct QNode * next;
}QNode, * Queueprt;
typedef struct {
  Queueprt front; //队头指针 
  Queueprt rear; //队尾指针 
}LinkQueue;
 //构造空队列
void InitialQueue(LinkQueue &q){
  q.front = q.rear = (Queueprt)malloc(sizeof(QNode));
  if (!q.front) {
    printf("分配空间失败!\n"); }
  q.front->next = NULL;
  printf("初始化成功!\n");}
 //入队
void EnQueue(LinkQueue &q, int e){
  Queueprt p = (Queueprt)malloc(sizeof(QNode));
  if (!p) {
    printf("分配空间失败!\n");}
  p->data = e;
  p->next = NULL;
  q.rear->next = p;
  q.rear = p;}
//出队 
void DeQueue(LinkQueue &q){
  QNode * p;
  if (q.front==q.rear) {
    printf("空队列!\n");}
  p = q.front->next;
  q.front->next = p->next;
  if (q.rear == p) q.rear = q.front;
  free(p);
  printf("出队成功!\n");}
 //输出队列
void show(LinkQueue &q){
  QNode * p = q.front->next;
  if (q.front==q.rear) {
    printf("空队列!\n");}
  while (p) {
  printf("%d ", p->data);
  p = p->next; }
  printf("\n");}
int main(){
  LinkQueue q;
  int m;
  InitialQueue(q);
  int count;
  int i = 0;
  printf("请输入队列的大小:");
  scanf("%d", &count);
  printf("请输入队列元素:");
  while (i++ < count) {
  scanf("%d", &m);
  EnQueue(q, m);} 
  printf("入队操作\n");
  printf("请输入需要入队的元素:");
  scanf("%d",&m);
  EnQueue(q,m);
  printf("该操作后队列为:");
  show(q);
  printf("出队操作\n");
  DeQueue(q);
  printf("输出队列为:");
  show(q);
  return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值