队列的链式优点是不用考虑队满情况。代码如下:

#include <iostream>#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop *///定义链式队列结点 typedef struct LinkNode{    int data;    struct LinkNode *next;}LinkNode;//定义队头尾指针结点(或者叫队列) typedef struct {    LinkNode *rear,*front;}LinkQueue;//初始化队列(带头结点) void InitQueue(LinkQueue &Q){    Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));//队头和队尾指针都指向头结点    Q.front->next = NULL; }//初始化队列(不带头结点) void InitQueue(LinkQueue &Q){    Q.front=NULL;//队头和队尾指针都指向NULL    Q.rear=NULL;}//判断队列是否为空(带头结点) bool isEmpty(LinkQueue Q){    if(Q.front==Q.rear){        return true;    }else{        return false;    }} //判断队列是否为空(不带头结点) bool isEmpty(LinkQueue Q){    if(Q.front==NULL){        return true;    }else{        return false;    }} //入队(带头结点) void EnQueue(LinkQueue &Q,int x){    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));    s->data = x;    s->next = NULL;    Q.rear->next = s;//s插入到rear之后     Q.rear = s;//修改表尾指针 }//入队(不带头结点) void EnQueue(LinkQueue &Q,int x){    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));    s->data = x;    s->next = NULL;    if(Q.front==NULL){//队头尾指针指向第一个元素         Q.front = s;        Q.rear = s;    }else{        Q.rear->next = s;//s插入到rear之后         Q.rear = s;//修改表尾指针     }   }//出队(带头结点)bool DeQueue(LinkQueue &Q,int &e)){    if(Q.front==Q.rear){//队空报错         return false;    }    LinkNode *q = Q.front->next;//指针q指向被删结点     e = q->data;    Q.front->next = q->next;    if(Q.rear==q){//最后一个结点情况         Q.rear = Q.front;     }    free(q);    return true;} //出队(不带头结点)bool DeQueue(LinkQueue &Q,int &e)){    if(Q.front==NULL){//队空报错         return false;    }    LinkNode *q = Q.front->next;//指针q指向被删结点     e = q->data;    Q.front = q->next;    if(Q.rear==q){//最后一个结点情况         Q.front=NULL;//队头和队尾指针都指向NULL        Q.rear=NULL;    }    free(q);    return true;} int main(int argc, char** argv) {    return 0;}

更多相关文章

  1. 2021.1.17——指针和结构体的初步认识
  2. 用replaceWith()对DOM结点操作时应注意的问题
  3. PHP如何区分继承链中的$ this指针?
  4. 堆栈/帧指针作为外部变量
  5. 自己实现的C++智能指针的功能代码和测试用例
  6. Android中findViewById()h获取EditText 空指针问题
  7. java--this指针在哪里存着呢?
  8. 填充java fx表时出现空指针异常
  9. Fragment中出现java.lang.NullPointerException 空指针 上下文为

随机推荐

  1. Google Android真实的谎言
  2. [Android] Android进程与线程基本知识
  3. Android布局优化(五)绘制优化—避免过度绘
  4. 【Android】1:Android APP开发入门篇
  5. QtAndroid详解(3):startActivity实战Andro
  6. Handler机制深入解析
  7. Android实现书籍翻页效果--扩展版
  8. 浅谈Android重力感应
  9. Android动画机制与使用技巧
  10. Android 自动化测试(5)