当前位置: 首页 > news >正文

链式队列的实现

//1:创建循环队列
//2:判空
//4:入队
//5:出队
//6:遍历
//7:队列长度
//8:销毁

main.c

#include"loop.h"
int main(int argc, const char *argv[])
{loop_p L=loop_create();//创建loop_empty(L);//判空loop_length(L);//长度loop_input(L,10);//入队loop_input(L,11);loop_input(L,12);loop_input(L,13);loop_input(L,14);loop_show(L);//遍历loop_length(L);//长度loop_output(L);//出队loop_output(L);loop_show(L);//遍历loop_length(L);//长度loop_free(L);//释放return 0;
}

loop.c

#include"loop.h"//创建链队列
loop_p loop_create()
{loop_p L=(loop_p)malloc(sizeof(loop));if(NULL==L){printf("---创建失败!---");return NULL;}L->front=(node_p)malloc(sizeof(node));if(NULL==L->front){printf("---申请节点失败!---");free(L);return NULL;}L->front->len=0;L->front->next=NULL;L->tail=L->front;printf("---创建链队列成功---\n");return L;
}
//判空
int loop_empty(loop_p L)
{if(L==NULL){printf("---入参为空,请检查---\n");return 0;}//队头队尾相等则队列为空return L->front==L->tail;
}//入队
int loop_input(loop_p L,datatype data)
{if(L==NULL){printf("---入队失败,请检查---\n");return 0;}//申请节点失败node_p new=(node_p)malloc(sizeof(node));if(new==NULL){printf("---申请节点失败---\n");return 0;}new->data=data;new->next=NULL;//尾插L->tail->next=new;L->tail=new;L->front->len++;return 1;
}
//出队
int loop_output(loop_p L)
{if(L==NULL||loop_empty(L)){printf("---出队失败,请检查---\n");return 0;}node_p p=L->front->next;L->front->next=p->next;free(p);if(L->front->next==NULL){L->tail=L->front;}L->front->len--;return 1;
}
//遍历
int loop_show(loop_p L)
{if(L==NULL||loop_empty(L)){printf("---遍历失败,请检查---\n");return 0;}printf("链队列为:");node_p p=L->front;while(p->next!=NULL){p=p->next;printf("%d->",p->data);}printf("NULL\n");return 1;
}
//队列长度
void loop_length(loop_p L)
{if(L==NULL){printf("---输出队列长度失败,请检查---\n");return;}printf("队列长度为:%d\n",L->front->len);return;
}
//销毁
void loop_free(loop_p L)
{if(L==NULL){printf("---销毁失败!---\n");return;}while(L->front->next!=NULL){loop_output(L);}free(L->front);L->front=NULL;L->tail=NULL;free(L);L=NULL;printf("---销毁循环队列成功---\n");return;
}

loop.h

#ifndef __LOOP_H__
#define __LOOP_H__#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef int datatype;typedef struct node
{union{int len;datatype data;};struct node *next;
}node,*node_p;typedef struct loop
{node_p front;//队头node_p tail;//队尾
}loop,*loop_p;//1:创建循环队列
loop_p loop_create();
//2:判空
int loop_empty(loop_p L);
//4:入队
int loop_input(loop_p L,datatype data);
//5:出队
int loop_output(loop_p L);
//6:遍历
int loop_show(loop_p L);
//7:队列长度
void loop_length(loop_p L);
//8:销毁
void loop_free(loop_p L);
#endif

结果

http://www.lryc.cn/news/397942.html

相关文章:

  • 深入剖析3D企业云展厅的价值,多维展示和精准营销的创新结合
  • 前台线程和后台线程(了解篇)
  • 最强文本编辑器 VIM 指令大全
  • 卤味江湖中,周黑鸭究竟该抓住什么赛点?
  • 2024年西安铁一中集训DAY1---- 杂题选讲
  • Python爬虫:BeautifulSoup的基本使用方法!
  • 【自监督学习】DINO in ICCV 2021
  • 使用simulink进行esp32开发,进行串口收发数据需要注意的地方,为什么收发不成功
  • 多周期路径的约束与设置原则
  • 【算法】反转链表
  • DevEco Studio No device 无法识别 usb 设备 - 鸿蒙
  • WebRTC API接口教程:实现高效会议的步骤?
  • MinIO - 服务端签名直传(前端 + 后端 + 效果演示)
  • 使用getopt处理参数
  • 图像搜索技术在司法证据分析中的应用:思通数科大模型的创新实践
  • python使用多进程,传入多个参数?
  • 李彦宏: 开源模型是智商税|马斯克: OpenAI 闭源不如叫 CloseAI
  • 怎么参与场外期权?场外期权交易要注意什么?
  • Postman脚本炼金术:高级数据处理的秘籍
  • MySQL字符串相关数据处理函数
  • 最近查看了一些批处理文件的写法,整理了一些基础的命令符,大佬勿喷
  • 解决 Yarn 运行时的 Node.js 版本问题:一个详尽的指南
  • SQL基础-DQL 小结
  • 冒泡排序与其C语言通用连续类型排序代码
  • Python爬虫并输出
  • 交叉熵损失函数的使用目的(很肤浅的理解)
  • MySQL:TABLE_SCHEMA及其应用
  • 【MySQL】4.MySQL 的数据类型
  • STM32中断(NVIC和EXIT)
  • 哈弗架构和冯诺伊曼架构