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

数据结构:链队

一、定义两个结构体

定义两个结构体,一个结构体是结点的结构体,一个结构体是保留指向对头结点和队尾结点指针的结构体

#ifndef __LINK_QUEUE_H__
#define __LINK_QUEUE_H__
#include <stdio.h>
#include <stdlib.h>typedef struct link_node{int data;struct link_node *next;
}link_node,*node_p;
typedef struct queue{node_p front;node_p rear;
}queue,*que_p;//创建头、尾指针
que_p creat_queue();
//申请链队
node_p creat_link(int data);
//判空
int empty(que_p Q);
//入队
void push_que(que_p Q,int data);
//出队
void pop_que(que_p Q);
//打印
void out_put(que_p Q);
//销毁
void free_Q(que_p *Q);
#endif

二、功能

1.创建头、尾指针

//创建头、尾指针
que_p creat_queue(){que_p Q=(que_p)malloc(sizeof(queue));if(Q==NULL){printf("申请空间失败\n");return NULL;}Q->front=Q->rear=NULL;return Q;
}

2.申请链队

//申请链队
node_p creat_link(int data){node_p new=(node_p)malloc(sizeof(link_node));if(new==NULL){printf("申请空间失败\n");return NULL;}new->data=data;new->next=NULL;return new;
}

3.判空

//判空
int empty(que_p Q){if(Q==NULL){printf("申请空间失败\n");return -1;}return Q->front==NULL?1:0;
}

4.入队

//入队
void push_que(que_p Q,int data){if(Q==NULL){printf("申请空间失败\n");return;}node_p new=creat_link(data);if(empty(Q)){  //如果是入队的第一个元素Q->front=new;Q->rear=new;return;}else{Q->rear->next=new;Q->rear=new;}}

5.出队

void pop_que(que_p Q){if(Q==NULL){printf("申请空间失败\n");return;}if(empty(Q)){printf("链队为空\n");return;}node_p del=Q->front;printf("出队的值为:%d\n",Q->front->data);Q->front=Q->front->next;free(del);
}

6.打印

//打印
void out_put(que_p Q){if(Q==NULL){printf("申请空间失败\n");return;}if(empty(Q)){printf("链队为空\n");return;}node_p p=Q->front;while(p!=NULL){printf("%d->",p->data);p=p->next;}putchar(10);
}

7.销毁

//销毁
void free_Q(que_p *Q){if(Q==NULL || *Q==NULL){return;}node_p p=(*Q)-front; //进行降级操作,实际就是要取链队的首指针while(p!=NULL){node_p q=p->next;free(p);p=q;}free(*Q);*Q=NULL;
}

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

相关文章:

  • 十四、计算机视觉-形态学梯度
  • 3月03日,每日信息差
  • leetcode 简单
  • 服务器硬件基础知识全解析
  • python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析
  • vmware网络负载均衡方式
  • Docker基础教程 - 2 Docker安装
  • Android 多桌面图标启动, 爬坑点击打开不同页面
  • 2024-3-1-网络编程作业
  • pytorch基础2-数据集与归一化
  • Python测试框架pytest介绍用法
  • AI对话系统app开源
  • SpringBoot+aop实现主从数据库的读写分离
  • 胎神游戏集第二期
  • Unicode/ASCII/UTF的关系(模板字面量、模板字符串、占位符)
  • 三、低代码平台-单据配置(单表增删改查)
  • 6.1 数据驱动型业务管理方法(3%)
  • JVM学习目录
  • 使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度?
  • 【Linux】基本指令(下)
  • LeetCode受限条件下可到达节点的数目
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • electron-release-server部署electron自动更新服务器记录
  • 贪心(基础算法)--- 区间选点
  • JAVA计算表达式
  • 【复现】宏景HCM 任意文件读取漏洞_63
  • Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
  • Web应用安全威胁与防护措施
  • MySQL相关知识汇总
  • 【旧文搬运】为你的 Laravel 应用添加一个基于 Swoole 的 WebSocket 服务