当前位置: 首页 > 编程日记 > 正文

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

队列的链式存储称为链式队列。链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行。链式队列的队首队尾指针分别用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;
}

运行结果:

相关文章:

离线安装k8s 1.9.0

说明本文参考 https://segmentfault.com/a/1190000012755243。在前 文基础上整理、增加说明&#xff0c;避坑。 踩过的坑&#xff1a; 安装k8s 1.9.0 实践&#xff1a;问题集锦 环境说明 环境信息&#xff08;采用一个master节点两个node节点) 192.168.1.137 tensorflow0 node …

eclipse 和 google拼音输入法冲突问题

eclipse每次当我按ctrl鼠标点击 代码 &#xff0c;本来应该是跳转到相应地方&#xff0c;可是现在每次一点eclipse就关掉。苦经搜索才知道&#xff0c;原来是使用eclipse时同时使用了谷歌拼音的问题&#xff0c;只要不要在点的时候使用谷歌输入法就好了。唉&#xff0c;谷歌拼音…

【腾讯bugly干货分享】微信Android热补丁实践演进之路

为什么80%的码农都做不了架构师&#xff1f;>>> 本文来自于腾讯bugly开发者社区&#xff0c;非经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;http://bugly.qq.com/bbs/forum.php?modviewthread&tid1264&extrapage%3D1 继插件化后&…

【ACM】杭电OJ 1001

是一道简单的题目&#xff0c;我只想要说&#xff1a;注意输出格式&#xff01; #include "stdio.h" int main () {int n,sum;while(scanf("%d",&n)1){sum0;for(int i1;i<n;i){sumi;} printf("%d\n\n",sum);}return 0; }

大数据处理也要安全--关于MaxCompute的安全科普

[TOC] 1.企业大数据处理现状 当今社会数据收集手段不断丰富&#xff0c;行业数据大量积累&#xff0c;数据规模已增长到了传统软件行业无法承载的海量数据&#xff08;百GB、TB乃至PB&#xff09;级别。基于此&#xff0c;阿里云推出有了一套快速、完全托管的GB/TB/PB级数据仓库…

自创设计模式-----答题卡模式

该模式是解决触发条件和触发结果的解耦&#xff0c;同时兼顾触发条件资源的可释放性。目的是为了获得触发结果。 /*** */package com.baidu.coolapp.answer;import java.util.Hashtable;import com.baidu.coolapp.composite.IComposite;/*** author liweigao**/public interfac…

The system cannot find the file specified

在家工作&#xff0c;程序在家里的电脑运行时&#xff0c;出现一个异常&#xff0c;还是第一见到&#xff1a; Server Error in / Application. The system cannot find the file specified Description: An unhandled exception occurred during the execution of the current…

【ACM】杭电OJ 1002

题目链接&#xff1a;杭电OJ 1002 表面上看是ab&#xff0c;很简单&#xff0c;其实是大数的相加&#xff0c;所以要考虑的因素有很多&#xff1b;&#xff08;瞬间觉得要是能用Python多好&#xff0c;哈哈哈&#xff09; 还有&#xff01;&#xff01;&#xff01; 要特别注…

Excel VBA 教程

https://www.w3cschool.cn/excelvba/ Excel VBA 编程教程 https://www.yiibai.com/vba VBA教程 http://www.accessoft.com/article-show.asp?id16502 关于VBA的0、""(空字符串)、Null、Empty、与 Nothing 的区别 转载于:https://www.cnblogs.com/onelikeone/p/…

NDK环境搭建

一、Eclipse关联cygwin 1. 工程->右击选择Properties->选择Builders&#xff0c;在Builders中选择New创建一个Program 2. 参数配置 二、Eclipse关联ndk-build&#xff08;自建Builder方法&#xff09; 1. Project->Properties->Builders->New&#xff0c;新建一…

【ACM】杭电OJ 2000

题目链接&#xff1a;杭电OJ 2000 注意使用getchar()&#xff0c;因为“\n”也是一个字符 #include "stdio.h" int main () {char a,b,c,t;while(scanf("%c%c%c",&a,&b,&c)!EOF){getchar();if(a > b){ta;ab;bt;}if(a > c){ta;ac;ct;}/…

bat批处理文件启动Eclipse和ivy本地仓库的配置

一、bat批处理文件启动Eclipse 所需文件&#xff1a; 1、eclipse 2、jre 3、startup-eclipse.bat 确保以上三个文件夹同级 startup-eclipse.bat: set dir%CD% cd %dir%\eclipse eclipse.exe -vm %dir%\jre\bin -vmargs -Xms512M -Xmx1024M -XX:PermSize128M -XX:MaxPermSize256…

helm安装配置

简介 helm是kubernetes的包管理工具&#xff0c;用于简化部署和管理 Kubernetes 应用。用来管理charts——预先配置好的安装包资源。 Helm和charts的主要作用&#xff1a; 应用程序封装版本管理依赖检查便于应用程序分发helm是一个C/S框架的软件&#xff0c;helm相当于一个客户…

ndk-build 参数NDK_APPLICATION_MK问题

被网络传闻和文档无限坑啊&#xff0c;竟然都说的是错的参数名&#xff1a;NDK_APP_APPLICATION_MK是错误的&#xff0c;NDK_APPLICATION_MK才是正确的 I am trying to pass a preprocessor define into my native code using the Android NDK that is dependent on build conf…

【GOF】23中设计模式深析

2019独角兽企业重金招聘Python工程师标准>>> ###对象创建 原型模式、工厂模式、抽象工厂模式、生成器、单例模式###接口适配 适配器模式、桥接、外观模式、迭代器###行为扩展 访问者模式、装饰模式、责任链模式###算法封装 模板方法模式、策略模式、命令模式、###性…

【ACM】杭电OJ 2005

题目链接&#xff1a;杭电OJ 2005 第一次写的时候&#xff1a; #include "stdio.h" int main () {int year,month,day,days,flag;while(scanf("%d/%d/%d",&year,&month,&day)!EOF){if((year%40 && year%100!0)||(year%4000)){flag1;…

详解数组中的reduce方法

前言 这几天面试被问到了数组的方法有哪些&#xff0c;回答得简直一塌糊涂&#xff0c;面试官说reduce的功能很强大&#xff0c;于是想对这个方法进行总结&#xff0c;在红宝书中对这个方法的描述并不算多&#xff0c;我也是参考了其他文章才进行总结的&#xff0c;下面就开始吧…

NDK注意事项

1. ifeq 等命令后面要加空格 2. 换行缩进用tab&#xff0c;不要用多个空格 3. 判断编译目标需要用NDK 变量 TARGET_ARCH_ABI, 包含CPU类型&#xff0c;和ABI标识

mac os x常用快捷键及用法

最近在研究mac os x系统&#xff0c;开始入手&#xff0c;很不习惯&#xff0c;和windows差别很大&#xff0c;毕竟unix内核。使用中总结了一些使用快捷键&#xff08;默认&#xff09;&#xff0c;持续更新&#xff0c;欢迎大家补充。1.撤销&#xff1a;commandz 保存&#x…

【ACM】杭电OJ 2007

题目链接&#xff1a;杭电OJ 2007 本题容易出错的地方在于&#xff1a;要考虑输入的两个数的大小&#xff0c;一定是小的在前&#xff0c;大的在后 #include "stdio.h" int main () {int a,b,sum1,sum2,t;while(scanf("%d%d",&a,&b)!EOF){if(a&g…

iOS FMDB之FMDatabaseQueue(事物与非事物)

事物与非事物 事物是一个并发控制的基本单元&#xff0c;所谓的事务&#xff0c;它是一个操作序列&#xff0c;这些操作要么都执行&#xff0c;要么都不执行&#xff0c;它是一个不可分割的工作单位。 事物与非事物&#xff0c;简单的举例来说就是&#xff0c;事物就是把所有的…

NDK crash栈信息的错误定位

Android NDK是什么&#xff0c;为什么我们要用NDK&#xff1f; Android NDK 是在SDK前面又加上了“原生”二字&#xff0c;即Native Development Kit&#xff0c;因此又被Google称为“NDK”。众所周知&#xff0c;Android程序运行在Dalvik虚拟机中&#xff0c;NDK允许用户使用类…

【ACM】杭电OJ 1096

题目链接&#xff1a;杭电OJ 1096 只要注意输出格式就好&#xff0c;其他没有问题&#xff01; #include <stdio.h> int main () {int a,N,n,sum;scanf("%d",&N);while(N--){sum0;scanf("%d",&n);while(n--){scanf("%d",&a…

Eclipse中SVN设置文件为ignore后重新添加至版本控制

先前把需要版本控制的文件夹ignore了&#xff0c;用了很长时间找解决方法&#xff0c;结果发现竟如此简单&#xff0c;对eclipse的功能不熟悉啊。 方法如下&#xff1a;在Window->Show View -> Navigator 中可以看见所有的项目文件&#xff0c;找到ignore的文件&#xff…

第四范式完成C轮融资,金额超10亿元

雷锋网(公众号&#xff1a;雷锋网)消息&#xff0c;12月19日&#xff0c;第四范式于近期完成C轮融资&#xff0c;融资金额超过10亿元&#xff0c;估值约12亿美金。同时引入包括国新、启迪、保利、三峡、中信、农银、交银等战略股东&#xff0c;红杉中国继续追加投资。本轮新晋投…

android mediaplayer状态机

对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个 MediaPlayer 对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表 MediaPlayer 对象可能驻留的状态。弧线表示驱动 MediaPlayer 在各个状态之间迁移的播放控制操作。 这里有两种类型的弧线。由一个箭…

刚刚、几秒前,时间格式化函数

应用场景 浏览实时信息网站时&#xff0c;总会看到发布时间&#xff0c;是这么显示的 例如 刚刚、几秒前&#xff0c;几分钟&#xff0c;几天&#xff0c;日期 ...&#xff0c;提供以下处理方案 服务端 ——PHP客户端 ——JavaScript处理方案 服务端 ——PHP 使用服务器端实现&…

【ACM】杭电OJ 1241(深度优先搜索小结)

题目链接&#xff1a;杭电OJ 1241 深度优先搜索问题 深度优先搜索是搜索的手段之一。它从某个状态开始&#xff0c;不断地转移状态直到无法转移&#xff0c;然后回退到前一步的状态&#xff0c;继续转移到其他状态&#xff0c;如此不断重复&#xff0c;直至找到最终的解。 油…

阿里云双12服务器和阿里云双12数据库活动又开始了

一年一度的阿里云双12服务器活动又开始了&#xff0c;非常的便宜&#xff0c;只需原价的二折即可。 双12活动地址 https://m.aliyun.com/act/team1212

android audiotrack使用问题:listener不回调的原因

部分人使用audiotrack&#xff0c;有可能会发现audiotrack的回调方法不回调&#xff0c;其实很多情况下是这样子的&#xff1a; 一般的音频数据源会起一个线程获取&#xff0c;一般新起的线程都没有looper,而audiotrack的创建必须要一个looper,如果没有拿到当前线程的looper,就…