赞
踩
队列(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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。