(数据结构)链队列的基本操作

这篇具有很好参考价值的文章主要介绍了(数据结构)链队列的基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include<stdio.h>
#include<stdlib.h>
typedef struct QueueNode
{
	int data;
	struct QueueNode* next;
}LinkedQueueNode;
typedef struct LQueue
{
	LinkedQueueNode* front;  //队头指针
	LinkedQueueNode* rear;	 //队尾指针
}*LinkedQueue;
//链队列的初始化
LinkedQueue Init_LinkedQueue()
{
	LinkedQueue Q = (LinkedQueue)malloc(sizeof(LinkedQueue));  //为链队头、尾指针申请空间
	LinkedQueueNode* head = (LinkedQueueNode*)malloc(sizeof(LinkedQueueNode));
	if (head==NULL)
	{
		printf("申请队列空间失败\n");
	}
	if (head != NULL && Q != NULL)
	{
		head->next = NULL;
		Q->front = head;
		Q->rear = head;
	}
	return Q;
}
//判断队列空
int LinkedQueue_Empty(LinkedQueue Q)
{
	if (Q->front == Q->rear)
	{
		return 1; //队列为空
	}
	else
	{
		return 0;
	}
}
//入队
int Enter_LinkedQueue(LinkedQueue Q,int x)
{
	LinkedQueueNode* node;  //链队节点指针变量
	node = (LinkedQueueNode*)malloc(sizeof(LinkedQueueNode));
	if (node == NULL)
	{
		return 0;	//申请队列空间失败
	}
	node->data = x;
	node->next = NULL;
	Q->rear->next = node;   //将新节点插入队尾
	Q->rear = node;		//将队尾元素设置为尾指针
	return 1;
}
//出队
int Delete_LinkedQueue(LinkedQueue Q, int* x)
{
	LinkedQueueNode* node;
	if (Q->front == Q->rear)  //判断队列为空
	{
		return 0;
	}
	else
	{
		node = Q->front->next;	//将原队列列顶元素的下一个节点赋值给node
		*x = node->data;
		Q->front->next = node->next; //头指针Q指向链队列的下一个数据元素
		if (node == Q->rear)
		{
			Q->rear = Q->front;  //若队列仅有一个数据元素,让队列为空
		}
		free(node);
		return 1;
	}
}
//取队列头数据元素
int GetFront_LinkedQueue(LinkedQueue Q, int* x)
{
	if (Q->front == Q->rear)  //判断队列为空
	{
		return 0;
	}
	*x = Q->front->next->data;
	return 1;
}
int main()
{
	//初始化
	LinkedQueue Q;
	Q = Init_LinkedQueue();
	while (1)
	{
		printf("输入1为入队,输入0为退队\n");
		int ret;
		printf("请输入选项\n");
		scanf("%d", &ret);
		if (ret == 1)
		{
			int x;
			printf("请输入需要入队的值\n");
			scanf("%d", &x);
			Enter_LinkedQueue(Q, x);
			continue;
		}
		else if (ret == 0)
		{
			int y = 0;
			Delete_LinkedQueue(Q, &y);
			printf("出队的值为:\n");
			printf("%d \n", y);
			continue;
		}
		else
		{
			printf("选项输入错误\n");
		}
	}
	return 0;
}

文章来源地址https://www.toymoban.com/news/detail-719334.html

到了这里,关于(数据结构)链队列的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构:定长顺序串(SString)基本操作的算法描述(C语言)

    作者在学习数据结构时,发现鲜有完全按照 C 语言描述的算法操作,这让习惯于写 .c 而不是 .cpp 的初学者很是头疼。本文将基于 C 语言描述算法操作,如有错漏还望大佬们指正。 本文将按照严惠敏所著《数据结构(C语言版)》所做的函数原型声明进行算法描述,由于C语言不支

    2024年02月07日
    浏览(72)
  • C语言---数据结构实验---哈夫曼树及哈夫曼编码的算法实现---图的基本操作

    本篇实验代码非本人写,代码源自外部,经调试解决了部分warning和error后在本地vs上可以正常运行,如有运行失败可换至vs 未来会重构实现该两个实验 内容要求: 1、初始化(Init):能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立哈夫曼树 2、建立编码

    2024年02月13日
    浏览(58)
  • 数据结构和算法学习记录——初识二叉树(定义、五种基本形态、几种特殊的二叉树、二叉树的重要性质、初识基本操作函数)

    目录 二叉树的定义 二叉树具体的五种基本形态 1.空树 2.只有一个节点 3.有左子树,但右子树为空 4.有右子树,但左子树为空  5.左右两子树都不为空 特殊二叉树 斜二叉树 满二叉树  完全二叉树 二叉树的几个重要性质 初识二叉树的几个操作函数  二叉树T: 一个有穷的节点

    2024年02月03日
    浏览(61)
  • 数据结构上机练习——单链表的基本操作、头文件、类定义、main函数、多种链表算法的实现,含注释

      头文件和源文件分开有很多好处:可以提高编译速度、提高代码的可维护性、提高代码的可重用性和可扩展性,同时也可以使代码结构更清晰,方便代码的管理和维护。 LinkList.h test.cpp                  (下面所有函数都默认在类中实现)   我们以

    2024年02月07日
    浏览(57)
  • 数据结构--串的基本操作

    第五话 数据结构之串 文章目录 一、了解什么是串 二、串的基本特征 三、串的基本操作 串的初始化 串的输出  四、串的匹配模式 五、总结 串(即字符串)是一种特殊的线性表,在信息检索、文本编辑等领域有广泛的应用。其特殊性体现在组成线性表的每个数据元素是单个

    2023年04月17日
    浏览(55)
  • 【数据结构】图的基本操作

    一、问题描述 分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作: 增加一个新结点v,Insert(G,v); 删除顶点v及其相关的边,Delete(G,v); 增加一条边v,w,Insert(G,v,w); 删除一条边v,w,Delete(G,v,w); 二、设计思路 1、邻接矩阵实现:         邻接矩阵实现图的基本

    2024年02月06日
    浏览(50)
  • 数据结构--图的基本操作

    使用的存储模式: 图的基本操作: • Adjacent(G,x,y):判断图G是否存在边x, y或(x, y)。 • Neighbors(G,x):列出图G中与结点x邻接的边。 • InsertVertex(G,x):在图G中插入顶点x。 • DeleteVertex(G,x):从图G中删除顶点x。 • AddEdge(G,x,y):若无向边(x, y)或有向边x, y不存在,则向图G中添加该

    2024年02月16日
    浏览(53)
  • 数据结构之栈的基本操作

    该顺序栈涉及到了存储整型数据的顺序栈还有存储字符型数据的顺序栈 实现的功能有:入栈、出栈、判断是否为空栈、求栈的长度、清空栈、销毁栈、得到栈顶元素 此外根据上述功能,编写了数值转换(十进制转化八进制)方法、括号匹配方法。 控制台界面展示: 进栈展示

    2024年01月23日
    浏览(49)
  • 【数据结构】串的基本操作及应用

    分别定义两个结构体——串的定长顺序存储、串的堆式顺序存储   问题: 1、编写函数,串用定长顺序存储表示来实现串的基本操作; 2、 编写串的匹配算法,实现查找功能。 算法思想阐述: BF 算法:首先S[1] 和T[1] 比较,若相等,则再比较S[2] 和T[2] ,一直到T[M] 为止;若

    2023年04月26日
    浏览(43)
  • 【数据结构】串的基本定义及操作

    🌈积薪高于山,焉用先后别 🌈   🌟 正式开始学习数据结构啦~此专栏作为学习过程中的记录 🌟 概念熟记: 串 是由 0个或多个字符 组成的有限的序列,记作 S = ′ a 1 a 2 . . . a n ′ S=\\\'a_1a_2...a_n\\\' S = ′ a 1 ​ a 2 ​ ... a n ′ ​ ,其中,当 n = 0 n=0 n = 0 时表示空串 串 中任意多个

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包