数据结构:链式队列尝试;0826

链式队列

尝试了 没写出来。代码存档,如下

queuelink.c

复制代码
#include"queue.h"
//1.申请 链式队列
queuelink_p creatlink()
{
	//申请 链表 头尾指针 结构体空间
	queuelink_p H=(queuelink_p)malloc(sizeof(queuelink));
	if(H==NULL)//申请空间失败
	{
		printf("申请空间失败\n");
		return NULL;
	}
	
	
	H->front=NULL;
	H->rear=NULL;

	return H;
}
//1.1申请 节点
queue_p creat_node(int V)
{
	//申请 链表 头尾指针 结构体空间
        queue_p N=(queue_p)malloc(sizeof(queue));
        if(N==NULL)//申请空间失败
        {
                printf("申请空间失败\n");
                return NULL;
        }
	N->data=V;
	N->next==NULL;

	return N;
}
//2.判空
int empty(queuelink_p H)
{       
	if(H==NULL)//入参为空
        {       
                printf("入参为空\n");
                return -1;
        }
	return H->front==NULL&&H->rear==NULL;
}
//4.入队
void push_rear(queuelink_p H,int V)
{       
	if(H==NULL)//入参为空
        {
                printf("入参为空\n");
                return ;
        }
	//申请节点
	queue_p N=creat_queue(V);
	//节点链接 入队 队尾
	if(H->front=NULL)
	{
		H->front=N;
	}
	if(H->rear!=NULL)
	{
		H->rear->next=N;
	}
	H->next=N;
}
//5.出队
int pop_que(queue_p H)
{       
	if(H==NULL)//入参为空
        {
                printf("入参为空\n");
                return ;
        }
	//判断队列为空
	if(empty(H))
	{
		printf("队列为空\n");
		return;
	}
	//出队 队头出
	queue_p D=H->front;
	//队头 指针 指向下一个
	H->front=H->front->next;

	//保留 出队的值
	int ret=D->data;
	//释放空间
	free(D);

	return ret;
}
//6.输出
void show_que(queuelink_p H)
{
	if(H==NULL)//入参为空
        {
                printf("入参为空\n");
                return ;
        }
        //判断队列为空
        if(empty(H))
        {
                printf("队列为空\n");
                return;
        }
        //S指针 输出值
        queue_p S=H->front;
        while(S!=NULL)
        {
                printf("%d ",S->data);
                S=S->next;
        }
}
//7.求队列元素个数
int count_que(queuelink_p H);
//8.释放循环队列
void free_que(queuelink_p *H);

main.c

复制代码
#include"queue.h"
int main()
{
	//1.申请队列
	queuelink_p H =creatlink();
	//4.入队
	for(int i=9;i>4;i--)
	{
	push_rear(H,i);
	}
	//5.出队
	printf("出队的值为%d\n",pop_que(H));

	//6.输出
	show_que(H);

	return 0;
}

queue.h

复制代码
#ifndef __QUEUE_H_ 
#define __QUEUE_H_ 1

#include<stdio.h>
#include<stdlib.h>

//链栈的节点 结构体
typedef struct node
{
	int data;
	struct node *next;
}queue,*queue_p;

//链式队列 头 结构体
typedef struct queuelink
{
	struct node *front;
	struct node *rear;
}queuelink,*queuelink_p;

//1.申请队列
queuelink_p creatlink();
//1.1申请节点
queue_p creat_node(int);
//2.判空
int empty(queuelink_p);
//4.入队
void push_rear(queuelink_p,int);
//5.出队
int pop_que(queuelink_p);
//6.输出
void show_que(queuelink_p);
//7.求队列元素个数
int count_que(queuelink_p);
//8.释放循环队列
void free_que(queuelink_p *);

#endif

兄弟,是报错

牛客刷题

相关推荐
Chester_19998 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
专注仿真13 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
间歇性努力持续性发呆的野生快乐选手14 小时前
高级数据结构:树状数组
数据结构
每周报刊19 小时前
竞速座舱级视界:爱攻 AGP497UCZD 超宽 QDOLED 显示器解析
数据结构·游戏·计算机外设
布莱克60519 小时前
链表详解:定义、作用、应用场景及与数组的区别(C/C++ 实战)
c语言·开发语言·c++·链表
鹿角片ljp20 小时前
LeetCode 141. 环形链表|从 HashSet 到快慢指针 O (1) 空间最优解
算法·leetcode·链表
小星星闪亮登场21 小时前
图论--最小生成树(内含二分图)
数据结构·算法·图论·迭代加深·图搜索算法
2601_962201721 天前
Java进阶,集合,Colllection,常见数据结构
java·数据结构·windows
挽星安1 天前
2026/8/29
数据结构·算法
positive_zpc1 天前
进阶数据结构图——最短路径(二)
数据结构·算法·图论·最短路径