队列的链式存储称为链式队列。链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行。链式队列的队首队尾指针分别用frontrear表示。

链式队列要掌握以下基本操作:

1、建立一个空的链式队列

2、判断链式队列是否为空

3、输出链式队列各个结点的值

4、取得链式队列的队首的结点值

5、对链式队列中插入一个值为x的结点

6、删除链式队列中队首节点

“队头删除,队尾插入”

运行环境:Dev-C++5.11

以下是头文件

#ifndef LNKQUEUE_H_INCLUDED
#define LNKQUEUE_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
typedef struct link_node
{int info;struct link_node *next;
}N;typedef struct
{N *front ,*rear;
}queue;/*建立一个空的链式队列*/
queue *init()
{queue *qu;qu=(queue*)malloc(sizeof(queue));qu->front=NULL;qu->rear=NULL;return qu;
}/*判断链式队列是否为空*/
int isempty(queue *qu)
{return     (qu->front?0:1);
} /*取得链式队列队首结点值*/
int read (queue *qu)
{if(!qu->front){printf("\n该链式队列为空\n");exit(1);}return (qu->front->info);
}/*输出链式队列各结点的值*/
void display (queue *qu)
{N *p=qu->front;if(!p){printf("该链式队列为空,无法进行打印\n");}else{while(p){printf("%d  ",p->info);p=p->next;}}
}/*向链式队列中插入一个值为x的结点(队尾插入)*/
queue *insert(queue *qu,int x)
{N *p;p=(N*)malloc(sizeof(N));p->info=x;p->next=NULL;if(!qu->front){qu->front=qu->rear=p;}else{qu->rear->next=p;qu->rear=p;}return qu;
}/*删除链式队列中的队首结点*/
queue *dele(queue *qu)
{N *q=qu->front;if(!qu->front){printf("该链式队列为空\n");return qu;}qu->front=q->next;free(q);return qu;
}
#endif // LNKQUEUE_H_INCLUDED

以下是主程序:

#include "stdio.h"
#include "lnkqueue.h"
int main ()
{int x;queue *qu;while(1){qu=init();printf("\n\n创建一个新的,以输入-1为结束\n");scanf("%d",&x);while(x!=-1){qu=insert(qu,x);scanf("%d",&x);}if(isempty(qu)){printf("该链式队列为空!\n"); }else{printf("该链式队列不为空!\n");}display (qu);printf("\n链式队列的队首结点值为:%d\n",read (qu));printf("进行插入操作,请输入要插入的数:");scanf("%d",&x);qu=insert(qu,x);display(qu);          printf("\n进行删除操作后:\n"); qu=dele(qu);display(qu);      }return 0;
}

运行结果:

【数据结构】链式队列的实现(C语言)相关推荐

  1. 数据结构——链式队列解析(C语言版)

    摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...

  2. 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现

    1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似,  例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...

  3. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列

    //链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...

  4. (c语言数据结构)用链式队列的方式实现输入12345,输出12345操作——期末数据结构程序设计

    用链式队列的方式实现输入12345,输出12345操作 文章目录 用链式队列的方式实现输入12345,输出12345操作 1.队列的定义 2.队列的初始化 3.判空操作 4.入队操作 5.出队操作 6 ...

  5. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  6. 链式存储结构 php,【PHP 实现数据结构】链式队列

    什么是链式队列 队列是一种"先进先出"的存储结构,是一种特殊的线性表,于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. 通常队列可以分为顺序队 ...

  7. 数据结构上机实践第七周项目2 - 自建算法库——链队(链式队列)

    自建算法库--链队(链式队列) 实现源代码如下: 1.liqueue.h /* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件工程名称:1 ...

  8. 刁肥宅手笔:纯C语言实现链式队列的相关操作

    先上图,以图服人: 图一 程序运行截图1 图二 程序运行截图2 上代码: 头文件LinkQueue.h: /*LinkQueue.h*/#ifndef LINKQUEUE_H_INCLUDED #de ...

  9. c语言队列(顺序队列,循环队列,链式队列)

    顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...

最新文章

  1. Android系统广播大全
  2. python向sqlite数据库中插入数据(变量)
  3. linux怎么不更新内核,Linux升级时不升级内核的方法
  4. Linux RAID磁盘阵列
  5. 工作流中ServiceTask的各种方法
  6. Spark Streaming 遇到 kafka
  7. spring-framework-5.1.x 源码编译 环境搭建 [ idea:2020.1 ]
  8. 工作一两年后 ,你会选择什么样的公司?
  9. flash代码_Flash如何处理常见的代码错误(AS3)(2)
  10. double几位小数_算法竞赛入门之每日一题:分数化化小数(decimal) C语言
  11. log添加 oracle redo_Redo Log之一:理解Oracle redo log
  12. 自己编写的一个代码统计的小工具
  13. javascript 学习指南--语法
  14. OSChina 周六乱弹 ——劳动节仍然在劳动,情人节却没有情人。
  15. python中扑克牌类设计_创建扑克牌类Python
  16. 用Python实现简易超市售货系统
  17. Chrome 扩展程序——LastPass:密码管理工具
  18. 三星修复软件+连接三星认证服务器,三星云服务从2月6日起不再支持第三方应用程序数据备份...
  19. 不同手机型号图文预览_微信编辑器预览一般以多大的手机尺寸为准?
  20. 中国大学慕课第六周编程题

热门文章

  1. python的turtle绘图体系入门必看(一)
  2. 如何分辨Web前端培训机构的好坏
  3. MongoDB主动撤回SSPL的开源许可申请
  4. 逆变器的技术创新 让光伏电站更具发展前景
  5. 切版网上线,启用qieban.cn
  6. POJ 1273 Drainage Ditches
  7. 使用模式创建一个面向服务的组件中间件
  8. 华为巨资收购为云计算趟平道路?
  9. 2010-12-30
  10. Boost filesystem学习笔记