C語言實現(xiàn)鏈隊列代碼
更新時間:2018年07月23日 09:01:04 作者:dmfrm
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)鏈隊列代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)鏈隊列的具體代碼,供大家參考,具體內(nèi)容如下
#include <stdio.h>
/* 隊列的結(jié)構(gòu)體 */
typedef int DataType;
#define NODE_LEN sizeof(NODE)
/* 隊列的節(jié)點 */
typedef struct stNode
{
DataType data;
struct stNode* next;
}NODE;
/* 隊列 */
typedef struct stQueue
{
NODE* head; //隊列的頭
NODE* tail; //隊列的尾
}QUEUE;
/* 初始化隊列,不帶頭結(jié)點*/
int initQueue(QUEUE* INQueue)
{
INQueue->head = NULL;
INQueue->tail = NULL;
return 0;
}
/* 從隊尾插入一個元素 */
int enQueue(QUEUE* InQueue,DataType InData)
{
NODE* pNewNode = (NODE*)malloc(NODE_LEN);
if (pNewNode == NULL)
{
return -1;
}
pNewNode->data = InData;
pNewNode->next = NULL;
/* 判斷,現(xiàn)在隊列里面有沒有節(jié)點 */
if (InQueue->head == NULL)
{
InQueue->head = pNewNode;
InQueue->tail = pNewNode;
}
else
{
InQueue->tail->next = pNewNode;
InQueue->tail = pNewNode;
}
return 0;
}
/* 遍歷該隊列 */
int visitQueue(QUEUE InQueue)
{
QUEUE* pstTemp = &InQueue;
/* 判斷隊列是否為空隊列 */
if (pstTemp->head == NULL)
{
printf("visitQueue: this queue is empty\n");
return -1;
}
/* 遍歷該隊列中的所有元素 */
while (pstTemp->head->next != NULL)
{
printf("%d ", pstTemp->head->data);
pstTemp->head = pstTemp->head->next;
}
printf("%d \n", pstTemp->head->data);
return 0;
}
/* 出隊列 */
int delQueue(QUEUE* InQueue,DataType* OutData)
{
if (InQueue->head == NULL)
{
printf("delQueue: this queue is empty\n");
return -1;
}
*OutData = InQueue->head->data;
NODE* pstTemp = InQueue->head;
InQueue->head = InQueue->head->next;
delete pstTemp;
return 0;
}
/* 判斷隊列是否是空隊列 */
int isEmptyQueue(QUEUE InQueue)
{
if (InQueue.head == NULL)
{
return 0; //是空隊列
}
return 1; //不是空隊列
}
int main()
{
/* 創(chuàng)建一個隊列 */
QUEUE queue;
DataType data;
initQueue(&queue);
/* 入隊列 */
enQueue(&queue, 12);
enQueue(&queue, 11);
enQueue(&queue, 2);
visitQueue(queue);
/* 出隊列 */
delQueue(&queue, &data);
visitQueue(queue);
printf("data = %d\n", data);
visitQueue(queue);
if (0 == isEmptyQueue(queue))
{
printf("This is empty queue\n");
}
else
{
printf("This is not empty queue\n");
}
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
聊聊Qt+OpenCV聯(lián)合開發(fā)之圖像的創(chuàng)建與賦值問題
這篇文章主要介紹了Qt+OpenCV聯(lián)合開發(fā)之圖像的創(chuàng)建與賦值問題,給大家介紹了圖像的克隆及拷貝問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
C++中fstream,ifstream及ofstream用法淺析
這篇文章主要介紹了C++中fstream,ifstream及ofstream用法,適合C++初學(xué)者學(xué)習(xí)文件流的操作,需要的朋友可以參考下2014-08-08
C語言中static的作用及C語言中使用靜態(tài)函數(shù)有何好處
在C語言中,static的作用有三條:一是隱藏功能,二是保持持久性功能,三是默認(rèn)初始化為0。本文重點給大家介紹C語言中static的作用及c語言中使用靜態(tài)函數(shù)有何好處,對本文感興趣的朋友一起看看吧2015-11-11
strings命令分析淺談Go和C++編譯時的一點小區(qū)別
今天小編就為大家分享一篇關(guān)于strings命令分析淺談Go和C++編譯時的一點小區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04

