队列操作(C语言,含代码)

简介: 队列操作(C语言,含代码)

队列是一种先进先出的数据结构,在写队列的代码时,建议先对链表的操作有所掌握。在这里实现一种链表式的队列。

// queue2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
typedef struct QNode
{
  int data;
  QNode *next;
}QNode;
typedef struct Liqueue
{
  QNode *front;
  QNode *rear;
}Liqueue;
void initQueue(Liqueue *queue)
{
  queue->front = queue->rear = (QNode *)malloc(sizeof(QNode));
  queue->front = queue->rear = NULL;
}
bool idEmpty(Liqueue *queue)
{
  if(queue->front == NULL || queue->rear == NULL)
  {
    return 1;
  }
  else return 0;
}
//进队列
void insertQueue(Liqueue *queue, int data)
{
  QNode *node = (QNode *)malloc(sizeof(QNode));
  node->data = data;
  node->next = NULL;
  if(queue->rear == NULL)
  {
    queue->rear = queue->front = node; //如果是第一个节点
  }
  else
  {
    queue->rear->next = node;
    queue->rear = node;
  }
}
int  popQueue(Liqueue *queue, int *data)
{
  QNode *node = queue->front;
  if(queue->front == NULL || queue->rear ==NULL) //控队列
    return 0;
  if(queue->front == queue->rear){
    queue->front = queue->rear = NULL;
  }else{
    queue->front = queue->front->next;
  }
  *data = node->data;
  free(node);
  return 1;
}
//遍历队列
void transQueue(Liqueue queue)
{
  int i = 1;
  QNode *p = queue.front;
  while(p != NULL ){
    printf("节点 : %d\n",p->data);
     i++;
     p = p->next;
  }
}
int _tmain(int argc, _TCHAR* argv[])
{
  Liqueue queue;
  initQueue(&queue);
  insertQueue(&queue, 0);
  insertQueue(&queue, 1);  
  insertQueue(&queue,2);
  insertQueue(&queue, 3);
  transQueue(queue);
  int tt;
  popQueue(&queue,&tt);
  printf("队尾取出1条数据 %d\n",tt);
  transQueue(queue);
  system("pause");
  return 0;
}

执行结果:


微信图片_20230116212705.png


目录
相关文章
|
11月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
906 9
|
11月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
190 4
|
10月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
11月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
302 5
|
11月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
292 1
|
12月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
164 2
|
12月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
133 2
|
12月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)