队列操作(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


目录
相关文章
|
1月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
165 9
|
26天前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
48 4
|
17天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
19天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
42 5
|
23天前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
18天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
47 1
|
2月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
2月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
2月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
3月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
60 4