数据结构:队列的C语言实现

本文详细介绍了队列这种数据结构,包括其基本概念、特点及实现方式。文章提供了队列的基本操作,如创建、判空、获取队头元素、元素入队与出队等,并附带了完整的C语言实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

队列(Queue),是一种特殊的线性表,其元素的逻辑关系是线性关系,其特殊性体现于只能在一端做插入运算,另一端删除元素。队列表现先进先出(FIFO)的特点。
队列的基本运算如下:

  • createQueue():创建队列
  • isEmpty(Queue queue):判空
  • getFirstElem(Queue queue):得到队头元素
  • addElem(Queue& queue, QueueType m):元素入队
  • exitQueue(Queue& queue, QueueType& m):元素出队
  • destoryQueue(Q):销毁队列
#include <stdio.h>
#include <stdlib.h>

typedef int QueueType;

struct Queue{
    QueueType key;
    struct LinkQueue *next;
};

typedef struct Node{
    struct LinkQueue *head;//头指针
    struct LinkQueue *end;//尾指针
}Queue;

//创建队列
Queue createQueue(){
	Queue queue;
	queue.head=0;
	queue.end=0;
	return queue;
}

//判断队列是否为空
int isEmpty(Queue queue){
	return queue.head==queue.end?1:0;
}

//得到队头元素
QueueType getFirstElem(Queue queue){
	if(queue.head==0){
		return 0;
	}
	return queue.head->key;
}

//入队
int addElem(Queue& queue, QueueType m){
	sturct LinkQueue* node = (sturct LinkQueue*)malloc(sizeof(sturct LinkQueue));
	if(!node){
		printf("元素内存增加失败。\n");
		return -1;
	}
	node->key=m;
	node->next=0;
	if (queue.end == 0) {
        queue.end = node;
    } else {//修改队尾指针
        queue.end->next = node;
        queue.end = node;
    }
    if (queue.head == 0) {
        queue.head = node;
    }
    return 1;
}
//出队
int exitQueue(Queue& queue, QueueType& m) {
    if (isEmpty(queue) == 0) 
        return 0;
    struct LinkQueue* node = queue.head;
    queue.head = node->next;
    node->next = 0;
    m = node->key;
    free(node);
    if (queue.head == 0)
        queue.end = 0;
    return 1;
}
int main(int argc, char const *argv[])
{
	/* code */
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值