一、借助第40指针与链表的相关内容,稍微修改即可:

   1、定义头文件queue.h代码如下:

  #include <stdlib.h>
#include <stdio.h> #ifndef queue_h
#define queue_h
typedef int DataType; typedef struct _node{
DataType data;
struct _node *next;
} Node; typedef struct _queue{
Node *head;
Node *tail;
} Queue; void initQueue(Queue *);
void enQueue(Queue *, DataType);
void deQueue(Queue *);
int getLength(Queue *);
void dispQueue(Queue *); #endif

  头文件中依旧是完成数据类型的声明和数据的操作函数的声明。

   2、头文件对应的实现文件queue.c代码如下:

  #include "queue.h"

  //队列初始化
void initQueue(Queue *queue){
queue->head = NULL;
queue->tail = NULL;
} //队列入
void enQueue(Queue *queue, DataType iData){
Node *node = (Node *)malloc(sizeof(Node));
node->data = iData;
node->next = NULL; if(queue->head == NULL){
queue->head = node;
}else{
queue->tail->next = node;
}
queue->tail = node; return; } //队列出
void deQueue(Queue *queue){
if(queue->head->next == NULL){
queue->head = NULL;;
}else{
queue->head = queue->head->next;
} return;
} //队列长度
int getLength(Queue *queue){
Node *node = queue->head;
int i = ;
while(node != NULL){
node = node->next;
i++;
} return i;
} //队列输出
void dispQueue(Queue *queue){
Node *node = queue->head;
int i = ;
while(node != NULL){
printf("the %dth node: %d\n", i + , node->data);
node = node->next;
i++;
}
printf("disp finished!\n"); return;
}

  代码说明:

    1、入队函数使用链表的尾插法

    2、出队函数直接将链表的头节点删除即可实现出队功能

    3、queue.c对应的测试文件testQueue.c代码如下:

  #include "queue.h"

  int main(int argc, char **argv)
{
Queue *queue1 = (Queue *)malloc(sizeof(Queue));
printf("the first:\n");
initQueue(queue1);
enQueue(queue1, );
enQueue(queue1, );
enQueue(queue1, );
enQueue(queue1, );
enQueue(queue1, );
printf("The length: %d\n", getLength(queue1));
dispQueue(queue1);
printf("the second:\n");
deQueue(queue1);
printf("The length: %d\n", getLength(queue1));
dispQueue(queue1);
deQueue(queue1);
dispQueue(queue1);
printf("The length: %d\n", getLength(queue1));
enQueue(queue1, );
dispQueue(queue1);
printf("The length: %d\n", getLength(queue1)); return ;
}

  测试函数完成所有函数的功能测试,功能通过就OK!

42深入理解C指针之---指针与队列的更多相关文章

  1. 00深入理解C指针之--- 指针之外

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. C语言从诞生之初就非常善于和硬件打交道,经过这么多年的发展之后,其灵活性和超强的特征是 ...

  2. 02深入理解C指针之---指针类型和值

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 1.指针的类型: 可以在声明指针时,指定指针的类型,例如: (1)void *x  声 ...

  3. 06深入理解C指针之---指针操作和比较

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则.本节内容中指针的操 ...

  4. 10深入理解C指针之---指针运算和比较

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针运算有很多种,主要有指针的声明*.指针的解引*.指针指向(*).或->.指针 ...

  5. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  6. 这样子来理解C语言中指针的指针

    友情提示:阅读本文前,请先参考我的之前的文章<从四个属性的角度来理解C语言的指针也许会更好理解>,若已阅读,请继续往下看. 我从4个属性的角度来总结了C语言中的指针概念.对于C语言的一个指 ...

  7. 从四个属性的角度来理解C语言的指针也许会更好理解

    文章会在文末更新! 关于指针是什么,很多教材已经作出了定义,大多数都会定义为"存放变量内存地址的变量".从这句话中我觉得除了让我知道这个定义有11个字以外,其他就没什么用了.我个人 ...

  8. 理解git 中的HEAD指针&branch指针

    理解git 中的HEAD指针&branch指针 Yooye关注 2019.02.28 10:44:32字数 492阅读 668 HEAD指针 使用git checkout 来移动HEAD指针, ...

  9. 深入理解C语言-函数指针

    函数指针在C++中有着重要的应用,函数的函数名其本质就是代表一个地址,这个地址叫做函数入口,得到这个地址就可以对这个函数进行各种操作. 函数类型基础 函数三要素: 名称.参数.返回值 C语言中的函数有 ...

  10. 深入理解C语言-二级指针三种内存模型

    二级指针相对于一级指针,显得更难,难在于指针和数组的混合,定义不同类型的二级指针,在使用的时候有着很大的区别 第一种内存模型char *arr[] 若有如下定义 char *arr[] = {&quo ...

随机推荐

  1. d3.js--04(enter和exit)

    enter() 当DOM数量少于data的数量,或者压根一个都没有的时候,我们一般会希望让程序帮忙创建. <!DOCTYPE html> <html> <head> ...

  2. CentOS 编译安装PHP5.6(7以上也通用)

    由于公司有新服务器需要构建一套LNMP平台,且需要编译安装各个部件,所以记录下此文章. 这是安装PHP涉及到的软件包(可以自行决定使用哪个版本): ├── libiconv-1.15.tar.gz ├ ...

  3. 【前端_js】JavaScript知识点总结

    1.JavaScript的定义及特性 1.1.定义 javascript是运行在客户端的一种直译式脚本语言(程序在运行过程中逐行进行解释),它的解释器被称为JavaScript引擎,为浏览器的一部分. ...

  4. Python + Bottle + 谷歌搜索Api 实现简单搜索引擎

    1.运行环境 python3 centos7 2.Bottle的使用 使用bottle主要是因为它仅用python自带的库即可实现对web的搭建. bottle源码分析 bottle使用教程 3.代码 ...

  5. Voyager如何使用Compass

    Compass由Resources,Commands,Logs三个部分组成 Resources包含了Links和Fonts: Commands可以执行php命令,比如创建model: 创建一个Down ...

  6. 如何用纯 CSS 和 D3 创作一只扭动的蠕虫

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/QBQJMg 可交互视频 ...

  7. 【php】命名空间的影响

    命名空间对代码的影响 类(包含抽象类和traits) 接口 常量 函数 ​

  8. python标准输入输出

    input() 读取键盘输入 input() 函数从标准输入读入一行文本,默认的标准输入是键盘. input 可以接收一个Python表达式作为输入,并将运算结果返回. print()和format( ...

  9. 基于TCP协议的网络通讯流程

    不多说了,先上个图: 从上面的图中可以看出来,基于TCP协议进行通讯可以大致分成以下几个阶段: 1. 首先是在服务器端, TCP Sever调用socket(), bind(), listen()完成 ...

  10. JSONP分享-- 在JavaScript中跨域请求

    如果你正在开发一个现代的基于web的应用程序,那么你: 在客户端使用JavaScript. 需要集成那些没有完全在你控制之下的服务(或者那些来自不同的域). 在你的浏览器控制台中遇到过这个错误信息: ...