链队C语言的使用

简介: 链队C语言的使用

链队:采用链表来存储队列

链队类型的使用

#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct QNode
{
  int data;
  struct QNode *next;
}QNode;
typedef struct
{
  QNode *front;
  QNode *rear;
}Liqueue;

初始化链队

void initQueue(Liqueue *&lqu)
{
  lqu=(Liqueue*)malloc(sizeof(Liqueue));
  lqu->front=lqu->rear=NULL;
}

判断队空

int isQueueEmpty(Liqueue *lqu)
{
  if(lqu->rear==NULL||lqu->front==NULL)
    return 1;
  else
    return 0;
}

入队算法

void enQueue(Liqueue *lqu,int x)
{
  QNode *p;
  p=(QNode*)malloc(sizeof(QNode));
  p->data=x;
  p->next=NULL;
  if(lqu->rear==NULL)//若队列空,新结点是队首结点,也是队尾结点
    lqu->front=lqu->rear=p;
  else
  {
    lqu->rear->next=p;
    lqu->rear=p;//新结点链接到队尾,p指向它
  }
}

出队算法

int deQueue(Liqueue *lqu,int &x)
{
  QNode *p;
  if(lqu->rear==NULL)//队空不能出队
    return 0;
  else
    p=lqu->front;
  if(lqu->front==lqu->rear)//队列只有一个结点的处理
    lqu->front=lqu->rear=NULL;
  else
    lqu->front=lqu->front->next;
  x=p->data;
  free(p);
  return 1;
}

虽然链队特点不存在队列满上溢

这里有个bug就是队列满的时候还继续入队,内存满

今天的链队复习就到这里

目录
相关文章
|
9月前
|
C语言
【C语言】exit函数详解
【C语言】exit函数详解
2637 0
|
存储 Java 数据库
|
C语言
C语言练习
C语言练习。
83 1
|
5月前
|
编译器 C语言 C++
从C语言到C++
本文档详细介绍了C++相较于C语言的一些改进和新特性,包括类型检查、逻辑类型 `bool`、枚举类型、可赋值的表达式等。同时,文档还讲解了C++中的标准输入输出流 `cin` 和 `cout` 的使用方法及格式化输出技巧。此外,还介绍了函数重载、运算符重载、默认参数等高级特性,并探讨了引用的概念及其应用,包括常引用和引用的本质分析。以下是简要概述: 本文档适合有一定C语言基础的学习者深入了解C++的新特性及其应用。
|
9月前
|
C语言
C语言:练习3
C语言:练习3
36 0
|
9月前
|
编译器 Linux C语言
|
存储 C语言
初识C语言(2)
初识C语言(2)
74 0
|
C语言
C语言的部分杂碎知识
C语言的部分杂碎知识
|
C语言
C语言假期作业 DAY 13
C语言假期作业 DAY 13
|
机器学习/深度学习 人工智能 搜索推荐
C语言假期作业 DAY 04
C语言假期作业 DAY 04