寒假演算法第一編 C語言實現佇列

2021-06-28 12:44:01 字數 2866 閱讀 3524

實現起來並不困難,主要是需要對相關細節要進行全面考慮。

比如說:什麼時候不能出隊啊,入隊要考慮溢位啊等等......

佇列其實顧名思義,乙個場景出現了,一群人排隊買燒麥(因為高中住房附近有一家燒麥特別好吃,一到放學時間就排起了隊,映像深刻),後來的人排到隊尾,隊頭的人買到燒麥後就離開佇列,一邊走一遍美美地吃著。

佇列和棧在程式設計中會經常用到,基礎知識我們也不能大意。

以下是我使用c語言實現的佇列的**:

/*

* 內容:佇列實現

* 語言:c語言

* */

#include

#include

#define datasize 1024

struct queue;

typedef struct queue queue;

void init(queue* queue); //初始化佇列

bool enqueue(queue *queue, int en_data); //入隊乙個整型數

bool enqueue_array(queue *queue,

int en_data,int array_size); //入隊乙個整型陣列

bool dequeue(queue* queue); //出隊

void print(queue* queue); //格式化輸出佇列

/** queue 需要操作的佇列指標

* */

void init(queue* queue)

/** queue 需要操作的佇列指標

* en_data 需要入隊的整型數

* 返回值 入隊成功返回true,失敗返回false

* */

bool enqueue(queue* queue, int en_data)

//入隊會導致資料溢位時,入隊失敗

if(queue->tail>= datasize)

//入隊,tail+1,size+1

queue->data[queue->tail++]=en_data;

queue->size++;

return true;}/*

* queue 需要操作的佇列指標

* en_data 需要入隊的整型陣列

* array_size 整型陣列的大小

* 返回值 陣列入隊成功返回true,失敗返回false

* */

bool enqueue_array(queue *queue, int en_data,

int array_size)

//判斷佇列是否已經初始化,若沒有則初始化

if (!queue->initialled)

//入隊會導致資料溢位時,入隊失敗

if(queue->tail+array_size> datasize)

for (i = 0; i

initialled)||queue->size==0)

//隊頭top+1,size-1

queue->top++;

queue->size--;

return true;}/*

* queue 需要操作的佇列指標

* */

void print(queue* queue)

printf("queue print\n***************==\n");

printf("queue size: %d\n-----------------\n",

queue->size);

printf("queue data:\n");

if (queue->size==0)else

}printf("***************==\nend\n");

return;

}

這是具體測試的**:

#include "h_queue.h"

void test();

void test_array();

void test_error();

void main()

void test()

void test_array();

enqueue_array(&queue, array, 10);

print(&queue);

dequeue(&queue);

dequeue(&queue);

dequeue(&queue);

print(&queue);

return;

}void test_error()

//獲得乙個大小為佇列長度最大值的整型陣列

for ( i = 0; i < datasize; i++)

//將這個陣列入隊,列印佇列長度(大小)

enqueue_array(&queue, array, 1024);

printf("queue size: %d\n",queue.size);

//在佇列充滿之後入列乙個數

if(!enqueue(&queue, num))

//佇列中資料全部出列,列印佇列長度(大小)

for (i = queue.size; i >0; i--)

printf("queue size: %d\n",queue.size);

//資料全部出列後再次執行出列

if (!dequeue(&queue))

return;

}

佇列(c語言實現)

目錄前言 一 佇列是什麼?二 佇列的屬性與操作以及種類 1.佇列屬性 2.佇列操作 3.佇列種類 三 佇列的實現 c語言 總結 本文旨在幫助剛接觸佇列的人更快的掌握,語言不夠嚴謹,望海涵。栗子 一對情侶準備在情人節去電影院看電影,男的是個身穿格仔衫的程式設計師,我們就稱之為小木,由於排隊買票的人特別...

佇列 c語言實現

佇列 先進先出 define minquesize 5 typedef struct treenode elemtype typedef struct myqueue myqueue creatqueue int capacity myqueue res malloc sizeof myqueue ...

C語言實現佇列

1 ifndef queue h 2 define queue h 34 include 5 6 typedef int qdatatype 資料型別 78 typedef struct listnode 通過鍊錶實現的 9listnode,plistnode 1314 typedef struct...